ファイルの先頭から x 個のゼロを削除するにはどうすればよいですか?

ファイルの先頭から x 個のゼロを削除するにはどうすればよいですか?

そこで、10 進数から 2 進数へのコンバーターを作成しましたが、現在のところ、先頭のゼロが切り捨てられません。$1 に 64 と入力すると、13 個のゼロで始まり、かなり見苦しいのですが、切り捨て方がわかりません。何か助けていただけますか?

#!/bin/bash

cat /dev/null > ~/Documents/.tobinary
touch ~/Documents/.tobinary

toBin=$1
counter=0
numZeros=0
first1=0
kill=0
echo $toBin

for v in {19..0}
do
    let temp=2**$v
    let test=$toBin-$temp

    if [ $test -ge 0 ]
    then
            if [ $first1 -eq 0 ]
            then
                    kill=$numZeros
                    let first1++
            fi
            if [ $test -gt 0 ]
            then
                    echo -n 1 >> ~/Documents/.tobinary
                    toBin=$test
            elif [ $test -eq 0 ]
            then
                    echo -n 1 >> ~/Documents/.tobinary
                    while [ $counter -lt $v ]
                    do
                        echo -n 0 >> ~/Documents/.tobinary
                            let counter++
                    done
                    break
            fi
    elif [ $test -lt 0 ]
    then
            echo -n 0 >> ~/Documents/.tobinary
            let numZeros++
    fi
done

cat ~/Documents/.tobinary

答え1

この特定のアルゴリズムを使用した特別な理由はありますか?

私はバイナリをファイルではなくシェル変数で構築したい。その場合、数字にゼロを追加することで先頭のゼロを取り除くことができる。

expr 00001111 + 0
1111

また、ファイルを使用する必要がある場合は、一時ファイルを格納する場所として ~/Documents ではなく /tmp を使用することをお勧めします。最後に、私なら、変換が完了したら自然に終了する除算方式を使用してバイナリを構築し、先頭のゼロの問題を解決するのではなく回避します。

関連情報