Eli*_*sky 17
在Python中,使用int
内置函数将0和1的字符串转换为数字:
>>> int("00100101", 2)
37
Run Code Online (Sandbox Code Playgroud)
然后使用chr
内置函数将8位整数(即包含范围0-255)转换为字符.
>>> chr(_)
'%'
Run Code Online (Sandbox Code Playgroud)
chr
可以使用该file.write
方法将结果简单地写入文件(以二进制模式打开).
如果你有超过8个字符要转换(我假设你这样做)那么你需要这样的东西(使用Python):
>>> b = '0010101001010101010111101010100101011011'
>>> bytearray(int(b[x:x+8], 2) for x in range(0, len(b), 8))
bytearray(b'*U^\xa9[')
Run Code Online (Sandbox Code Playgroud)
这会将位串分成8个字符块(如果你的字符串不是8长的倍数你应该先填充它),将每个块转换成一个整数,然后将整数列表转换为bytearray
可以直接写入的整数列表你的二进制文件(没有必要将它转换为字符串):
>>> with open('somefile', 'wb') as f:
... f.write(the_bytearray)
Run Code Online (Sandbox Code Playgroud)
如果您有更多这样的任务,那么有些库可以提供帮助,例如,使用我的bitstring模块进行相同的转换:
>>> from bitstring import BitArray
>>> with open('somefile', 'wb') as f:
... BitArray(bin=b).tofile(f)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2744 次 |
最近记录: |