如果我有字符串" 0"和" 1"如何以每个字符只需要一位的方式将它们写入文件中?
答案 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)))