如何写字符串" 0"和" 1"到使用位的文件

时间:2015-10-24 16:27:19

标签: python-2.7

如果我有字符串" 0"和" 1"如何以每个字符只需要一位的方式将它们写入文件中?

2 个答案:

答案 0 :(得分:0)

据我所知,您无法将单个位写入文件,但您可以使用bytearray写入字节。此外,表示字符串与表示整数不同,您确定要字符串吗?

答案 1 :(得分:0)

您可以将位转换为8位字符串(如果需要,将位用零填充以形成完整字节):

>>> bits = "1000001"
>>> int2bytes(int(bits, 2))
'A'

如果位数可以被8整除,那么输入中的每个"0""1"将被转换为结果中的一位。否则,每个输入位每位需要((n + 7) // 8) * 8 / (1.*n)位(对于大n仅略大于1),例如,如果位数n=1001则比率为〜1.007

领先的零被遗忘了。如果在保存和删除位的同时始终将"1"添加到位,则可以保留它们。

将位保存到文件:

with open(filename, 'wb') as file: # open in binary mode
    file.write(int2bytes(int(bits, 2)))

其中int2bytes()

import binascii

def int2bytes(i):
    hex_string = '%x' % i
    n = len(hex_string)
    return binascii.unhexlify(hex_string.zfill(n + (n & 1)))

要反过来,请参阅Convert binary to ASCII and vice versa