我正在使用Huffman编码和解码算法在python中创建一个压缩项目。我必须创建一个小得多的文件。我正在使用从Huffman树中获取的字节值并将其作为字符串文字写入文件,如'0100101'我想转换相同的数字,以便它存储为二进制数字。
答案 0 :(得分:1)
有关如何将表示存储在一个文件中的二进制值的字符串列表写为另一个文件的示例,请参阅下面的代码示例。请注意,两种变体(已使用和已经过去的变体)都会给出相同的结果。
# lstStrBin = ['01001010','10100101','01001011']
lstStrBin = open("binaryToByteString_Cg.txt").readlines()
# byteArr = bytearray([int(strBin, 2) for strBin in lstStrBin])
bytesString = bytes([int(strBin, 2) for strBin in lstStrBin])
# print(byteArr) gives: bytearray(b'J\xa5K')
with open('binaryToByteString_Cg.bin', "wb") as f:
# f.write(byteArr)
f.write(bytesString)
binaryToBytes.bin
的内容(长度为3个字节并显示在SciTE中)为:
P.S。这里是binariesFile.txt的内容:
01001010
10100101
01001011
<小时/> <小时/>
ADDENDUM (2017-04-25)
:
根据OP的请求(参见注释),我在下面提供了两种转换方式的代码。代码读取.txt
文件,其中01010101
行类似,为.bin-fromTxt
文件中的每一行写一个二进制文件.txt
,其中包含单个字节,然后读取{{1}具有单个字节的文件并写入包含.bin-fromTxt
行的.txt-fromBin
文件。
在该过程结束时,01010101
文件将与.txt-fromBin
文件具有相同的内容,表明前后转换成功。
.txt
如果with open('binaryToByteString_Cg.txt') as f_txt:
bytesString = bytes([int(strBin, 2) for strBin in f_txt.readlines()])
with open('binaryToByteString_Cg.bin-fromTxt', "wb") as f_bin:
f_bin.write(bytesString)
with open('binaryToByteString_Cg.bin-fromTxt', "rb") as f_bin:
bytesString = f_bin.read()
with open('binaryToByteString_Cg.txt-fromBin', "w") as f_txt:
for byte in bytesString:
f_txt.write( "{0:{fill}8b}\n".format(byte, fill='0'))
文件包含:
binaryToByteString_Cg.txt
01010101
10101010
00001111
文件包含:
和最后的binaryToByteString_Cg.bin-fromTxt
:
binaryToByteString_Cg.txt-fromBin
答案 1 :(得分:0)
假设通过二进制数字&#39;你的意思是整数:
>>> int('0100101', 2)
37
只需使用内置int
函数并将2
作为基础,将字符串转换为整数。