【发布时间】:2022-01-03 20:54:55
【问题描述】:
我有一个如下所示的 python 字符串:
byte_string = "01100110"
我想把它变成这样的字节:
byte_byte = some_function(byte_string) # byte_byte = 0b01100110
我怎样才能做到这一点?
【问题讨论】:
标签: python-3.x string byte
我有一个如下所示的 python 字符串:
byte_string = "01100110"
我想把它变成这样的字节:
byte_byte = some_function(byte_string) # byte_byte = 0b01100110
我怎样才能做到这一点?
【问题讨论】:
标签: python-3.x string byte
您似乎想将该字符串转换为单个数字。为此,您只需转换为底数为 2 的 int。
byte_byte = int(byte_string, 2)
【讨论】:
在再次思考问题后,我想我最初误解了您的意图,这反映在我下面的“先前答案”中。
我在想this prior SO question 也可以解决你的问题,因为听起来你想将一个 8 位的字符串转换为一个字节。 而且,正如@Mark Ransom 所指出的那样,它看起来像一个十进制代码:
int(byte_string, 2)
output: 102
或者像这样作为对应的ascii字符:
chr(int(byte_string, 2))
output: 'f'
----基于将字符串编码为字节数组的假设的先前答案-----
您可以像这样将字符串编码为字节,如果需要,可以选择传递特定的编码:
byte_string = "01100110"
byte_string.encode("utf-8")
bytes(byte_string, 'utf-8')
结果:
b'01100110'
Link to python docs for encoding / decoding strings.
另一种选择是创建一个字节数组:
bytearray(byte_string, 'utf-8')
output: bytearray(b'01100110')
这里还有另一个 StackOverflow thread 可能也有帮助,它描述了 bytes 和 bytearray 对象在与字符串之间的转换方面的区别。
【讨论】: