Frage

Angenommen, ich habe alle Daten in Bytes gespeichert. Zum Beispiel:

  

0110001100010101100101110101101

Wie kann ich speichern Sie es als druckbare Text? Der offensichtliche Weg wäre jedes 0 bis das Zeichen ‚0‘ konvertieren und alle 1 bis das Zeichen ‚1‘. In der Tat ist es das, was ich gerade mache. Ich würde gerne wissen, wie ich sie fest mehr packen konnte, ohne Informationen zu verlieren.

Ich dachte an Bits in Gruppen von acht bis ASCII konvertieren, aber einige Bit-Kombinationen sind nicht in diesem Format akzeptiert. Jede andere Ideen?

War es hilfreich?

Lösung

Was ist eine Codierung, die nur „sichere“ Zeichen wie base64 verwendet?
http://en.wikipedia.org/wiki/Base64

EDIT: Das setzt voraus, dass Sie die Daten in Textdateien und so

sicher speichern?

In Python 2.x sollten Strings in Ordnung sein (Python verwendet nicht null Strings beendet, also keine Sorge darüber).

Else in 3.x überprüfen Sie die Bytes und bytearray Objekte aus. http://docs.python.org/3.0/library/stdtypes. html # Bytes-Methoden

Andere Tipps

Nicht sicher, was Sie reden.

>>> sample = "".join( chr(c) for c in range(256) )
>>> len(sample)
256
>>> sample
'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\
x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\'()*+,-./0123456789:;<=>?@ABC
DEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83
\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97
\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab
\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf
\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3
\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7
\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb
\xfc\xfd\xfe\xff'

Der String sample enthält alle 256 verschiedene Bytes. Es gibt nicht so etwas wie eine „Bit-Kombinationen ... nicht akzeptiert“.

Um es druckbare , einfach repr(sample) verwenden - Nicht-ASCII-Zeichen entgangen sind. Wie Sie sehen oben.

der Standard Versuchen array Modul oder die struct Modul. Diese Unterstützung Bytes in eine platzsparende Art und Weise zu speichern -. Aber sie unterstützen keine Bits direkt

Sie können auch versuchen, http: //cobweb.ecn. purdue.edu/~kak/dist/BitVector-1.2.html oder http: //ilan.schnell-web.net/prog/bitarray/

Für Python 2.x, die beste Wahl ist, sie in einer Zeichenfolge zu speichern. Sobald Sie diese Zeichenfolge haben, können Sie diese in sichere ASCII-Werte codieren die base64-Modul, das mit Python kommt.

import base64
encoded = base64.b64encode(bytestring)

Dies wird viel mehr kondensiert als Speicher von "1" und "0".

Für weitere Informationen über den base64-Modul finden Sie in dem Python docs .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top