如何在Python中将8位数转换为实际字节?

时间:2014-09-27 20:49:03

标签: python

说我有8位

01010101

等于字节

u

但我实际拥有的是8个二进制文件(好吧,整数)。如何将这8个二进制文件转换为相应的字节?

我正在尝试

byte = int(int('01010101'), 2)
byte = chr(byte)
byte = bytes(byte)

但是这给了我一个字节数组而不是一个字节......

2 个答案:

答案 0 :(得分:1)

以下内容被解释为八进制,因为它以'0'

为前缀
01010101

如果要将其解释为二进制,请添加前缀'0b'

>>> 0b01010101
85

这与将数字表示为int

相同
>>> int(0b01010101)
85

并将值表示为chr

>>> chr(0b01010101)
'U'

另请注意hex的前缀为'0x'

答案 1 :(得分:1)

你在哪个版本的python上?使用2.7.8:

,使用与您相同的语句得到85和'U'
int('01010101', 2)
>>> 85
int(int('01010101', 2))  # not needed
>>> 85
chr(int('01010101', 2))
>>> 'U'
bytes(chr(int('01010101', 2)))  # not needed
>>> 'U'

要将二进制数据实际写入文件,请参阅this answer(对于py 2和3)和this。文件mode应为'wb'。并且不要转换为chr。