파일 시작 부분에서 x 0을 제거하는 방법은 무엇입니까?

파일 시작 부분에서 x 0을 제거하는 방법은 무엇입니까?

그래서 10진수를 2진수로 변환하는 변환기를 만들었지만 현재는 처음 부분에서 0을 자르지 않습니다. 1달러에 64를 입력하면 13개의 0으로 시작하는데, 꽤 보기 흉한데 어떻게 없애야 할지 모르겠습니다. 도움이 필요하세요?

#!/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

이 특정 알고리즘을 사용하는 특별한 이유가 있나요?

파일보다는 쉘 변수에 바이너리를 빌드하고 싶습니다. 이 경우 숫자에 0을 추가하여 앞에 오는 0을 제거할 수 있습니다.

expr 00001111 + 0
1111

또한 꼭 파일을 사용해야 한다면 ~/Documents 대신 /tmp를 사용하여 임시 파일을 저장하는 것이 좋습니다. 마지막으로, 제가 여러분이라면 나눗셈을 사용하여 바이너리를 구성하는 것을 선호합니다. 변환이 완료되면 자연스럽게 끝나서 앞에 오는 0 문제를 해결하기보다는 피하는 것입니다.

관련 정보