2009-04-16 13 views
1

Ich bin neu in binärer Konvertierung. Ich benutze Python, Bash und AWK täglich.Wie verwenden Sie die Binärkonvertierung in Python/Bash/AWK?

Ich würde gerne Anwendungen der binären Konvertierung in diesen Sprachen sehen. Zum Beispiel interessiere ich mich für Probleme, die Sie bei Ihrer Arbeit damit lösen.

Wo verwenden Sie binäre Konvertierung in Python/Bash/AWK?

Ich möchte Beispiele für Codes sehen.

+4

Ich bin mir nicht sicher, ob ich Ihre Frage verstehe. Von welcher Art binärer Konvertierung sprichst du? –

+0

Binäre Konvertierung welcher Daten? Warum? –

+0

@ S.Lott: Ein Gewinner bei Topcoder sagt, dass er die Binärumwandlung täglich mit Algorithmen verwendet. –

Antwort

2

Umwandlung von Strings von binären Ziffern in eine Zahl mit Python auf der Kommandozeile:

binary=00001111 
DECIMAL=$(python -c "print int('$BINARY', 2)") 
echo $decimal 

Lesen Sie die Dokumentation für die int function.

Oh, warte, ich habe die Frage falsch gelesen, Sie wollen wissen, was die Umwandlung in binäre Sie erreicht. Nun, das hängt davon ab, was Sie mit "in Binär konvertieren" meinen. Angenommen, ich möchte eine Datei mit einer Million ganzen Zahlen speichern. Die ganzen Zahlen werden zwischen 0 und 32.000 liegen. Wenn ich sie als Text speichern würde, würde es bestenfalls zwei Bytes für jede Zahl (einstellige Zahl und ein Trennzeichen), schlimmstenfalls sechs Bytes (fünfstellige Zahl und ein Trennzeichen) mit einer durchschnittlichen Größe von 4,6 Bytes pro Zahl (siehe Kommentar für die Mathematik). Ich hätte auch keine einfache Möglichkeit, die 15. Nummer zu wählen. Wenn ich sie als 16-Bit-Integer (binär) speichern würde, würde jede Zahl genau zwei Bytes aufnehmen, und ich könnte die 15. Nummer finden, indem ich seek zum Offset 2*(15-1) schreibe und zwei Bytes lese. Wenn ich Mathe in der textbasierten Version mache, muss ich (oder meine Sprache) zuerst die Zeichenfolge in eine Zahl umwandeln, während die binäre Version bereits eine 16-Bit-Nummer ist.

Also, kurz gesagt, Sie verwenden binäre Typen

  1. sparen Platz
  2. haben konsistenten Datensatz Größen
  3. beschleunigen Programme
+0

@Owens: Verwenden Sie täglich Binärkonvertierung? –

+0

Auch hier kommt es darauf an, was Sie unter "Binärkonvertierung" verstehen. In einigen Jobs waren viele der Datendateien aus den oben genannten Gründen Binärdateien. –

+2

Sie haben 10 1-stellige, 90 2-stellige, 900 3-stellige, 9000 4-stellige und 23000 5-stellige Zahlen, so dass Ihr "Durchschnitt" wirklich 4,6 ist – nosklo

2

in der Schale, eine schöne Verwendung von dc:

echo 2i 00001111 pq | dc 

2i bedeutet: Basis für Eingabenummern ist 2.

pq bedeutet: drucken und beenden.

Der andere Weg ist:

echo 2o 15 pq | dc 

Ich erinnere mich nicht in realen Situationen diese Funktion genutzt haben.

+0

@mouviciel: Ein Gewinner eines Topcoder Wettbewerbs sagte mir, dass er muss die Binärkonvertierung täglich mit algorihtms verwenden. Kann das wahr sein? –

+0

Vielleicht für ihn ... Die seltenen Fälle, in denen ich zu und von binär konvertieren muss, ist, wenn ich in der Nähe der Hardware code. – mouviciel

+1

Kein Punkt in der Verwendung von Echo und einer Pipe, speichern Sie einen Prozess und verwenden Sie einfach dc -e '2i 00001111 pq'. – unwind

0

In neueren Versionen von Python gibt es die bin() Funktion, die ich glaube, nimmt ein int und gibt ein binäres Literal, Formular 0b011010 oder was auch immer.

Verwandte Themen