假设我有存储以字节为单位的任何数据。例如:

  

0110001100010101100101110101101

我怎样才能将其存储为的打印的文本?最明显的方法是每隔0转换为字符“0”,并且每1〜字符“1”。事实上,这是目前我在做什么。我想知道我怎么能收拾他们更紧密,不会丢失信息。

我想在八组,以ASCII转换的比特,但一些比特组合是不 接受该格式。任何其他的想法?

有帮助吗?

解决方案

大约只使用类似的base64“安全”字符的编码是什么?结果 http://en.wikipedia.org/wiki/Base64

编辑:这是假设您想要安全地存储在文本文件和数据,例如

在Python 2.x的,字符串要细(Python不使用空终止字符串,所以不用担心这一点)。

否则在3.x的检查出的字节和ByteArray对象。 http://docs.python.org/3.0/library/stdtypes。 HTML#字节的方法

其他提示

不知道你在说什么。什么

>>> 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'

的字符串sample包含所有256个不同的字节。有作为“位的组合...不接受”没有这样的东西。

要使它的打印的,只需使用repr(sample) - 非ASCII字符转义。正如所看到的上方。

尝试标准阵列模块或结构模块。这些支撑存储字节的空间有效的方式 - 但它们不直接支持位

您也可以尝试 HTTP://cobweb.ecn。 purdue.edu/~kak/dist/BitVector-1.2.html HTTP: //ilan.schnell-web.net/prog/bitarray/

对于Python 2.x中,最好的办法是将它们存储在一个字符串。一旦你的字符串,你可以编码成使用与Python中的Base64模块安全的ASCII值。

import base64
encoded = base64.b64encode(bytestring)

这将大大超过存储冷凝的 “1” 和 “0”。

有关的BASE64模块的更多信息,请参见蟒文档

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top