Die Bash-shell-Dezimal zu Binär Basis 2-Konvertierung
Ich bin auf der Suche nach einer einfachen Möglichkeit in der Bash konvertieren Sie eine Dezimalzahl in eine binäre Zahl ist. Ich habe Variablen, die konvertiert werden müssen:
$ip1 $ip2 $ip3 $ip4
Gibt es eine einfache Methode, dies zu tun, ohne Blick auf jede einzelne Zahl?
Ich würde es vorziehen, nicht zu haben, viel zu schreiben von code.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie
bc
als:Sehen
echo "obase=2;10;20;30" | bc | tr -d '\n'
| tr -d '\n'
am Ende.bc <<<"obase=2;$ip1"
.bc
ist ein Taschenrechner nimmt die Eingabe von der Standardeingabe. In diesem Fall, wird die Eingabe der Zeichenfolge, um die Basis der Ausgabe auf 2 (wahrscheinlich die Standard-Eingabe ist die Basis 10), und dann einfach echo die Nummer in der "ip1" - variable. Die <<< ist nur ein schneller Weg, um eine Zeichenfolge übergeben oder Variablen jährigen stdin (ie. es ist äquivalent zuecho "obase=2;$ip1" | bc
(aber vermutlich bevorzugt, da es entfällt der Aufruf von echo). Ein einfacher Beispielbc
addieren von zwei und zwei istbc <<<"2+2"
.echo $((2#$@))
wo $@ ist Ihre binäre Zahl.Konvertieren dezimal zu Binär mit der bash-builtin-Befehle (Bereich 0 bis 255):
00000111
01010101
01111111
Entfernen führende Nullen, z.B. von
${D2B[7]}
:111
Diese erstellt ein array mit
00000000 00000001 00000010 ... 11111101 11111110 11111111
mit der bash ist brace expansion. Die position im array D2B entspricht decimal-Wert.Siehe auch: Verständnis-code ({0..1}{0..1}{0..1}{0..1}{0..1}{0..1}{0..1}{0..1})
eval D2B='('$(for ((i=0; i<$n; i++)); do printf '%s' "{0..1}"; done)')'
(nach Einstellungn
). Der einzige Nachteil ist, dass diese Methode in O(2^n) Leerstelle (superpolynomial!). Diese zieht schnell unhandlich.{0..1}
?echo $D2B
ist00000000
die verwirrend mich, wie diese nicht Aussehen wie ein array, sondern ein einfacher string. Danke für die Aufklärung, mir!D2B
ist ein array. Ich empfehle nicht, mithilfe von$D2B
denn es dient der Anzeige von strings. Zugriff auf das erste element eines Arrays verwenden${D2B[0]}
.Allgemeine Methode für die Umwandlung einer integer-Zahl in eine andere Darstellung mit einer anderen Basis (aber base<=10 aufgrund der Verwendung von Ziffern 0..9 für die Darstellung, nur):
z.B.
Dezimal zu Binär-Konvertierung in der Bash:
Ich bin mit Ubuntu 14.04 zu tun.
Konvertieren Sie die Dezimalzahlen 1 bis 5 binary.
Bonus Beispiel:
Dezimal zu Binär mit nur Bash
Beliebige ganze Zahl konvertiert werden kann, ti binary mit Sie::
Und kopieren Sie dann fügen Sie die folgenden:
Beispiel:
Integer Hinzugefügt werden müssen!!
Auch, einen anderen Weg mit python:
Viel langsamer
Hexadezimal zu Binär mit nur Bash
Ähnlich, hexadezimal zu Binär, wie folgt mit nur bash:
Beispiel:
Hex übergeben werden müssen: