Wie kann ich x Nullen vom Anfang einer Datei entfernen?

Wie kann ich x Nullen vom Anfang einer Datei entfernen?

Ich habe also einen Dezimal-Binär-Konverter erstellt, aber derzeit werden die Nullen am Anfang nicht abgeschnitten. Wenn ich 64 für 1 $ eingebe, beginnt es mit 13 Nullen, was ziemlich unansehnlich ist, aber ich weiß nicht, wie ich sie abschneiden kann. Irgendwelche Hilfe?

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

Antwort1

Gibt es einen bestimmten Grund, warum Sie diesen speziellen Algorithmus verwendet haben?

Ich würde die Binärdatei lieber in Shell-Variablen als in einer Datei erstellen. In diesem Fall können Sie die führenden Nullen entfernen, indem Sie einer Zahl eine Null hinzufügen, wie zum Beispiel

expr 00001111 + 0
1111

Wenn Sie eine Datei verwenden müssen, würde ich außerdem vorschlagen, /tmp statt ~/Documents zum Speichern temporärer Dateien zu verwenden. Und schließlich würde ich an Ihrer Stelle die Binärdatei lieber mit einer Divide-Methode erstellen, die natürlich endet, wenn die Konvertierung abgeschlossen ist, wodurch das Problem führender Nullen vermieden, anstatt es zu lösen wird.

verwandte Informationen