파일 시작 부분에서 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이 오는 문제를 피하는 것을 선호합니다.

관련 정보