我有一些二进制对象
binary_size = b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
binary_length = b'\x00\x00\x00'
[当我尝试加入他们时,我得到了:
binary_size.join(binary_length)
*** TypeError: sequence item 0: expected a bytes-like object, int found
以前,在将它们转换为二进制之前,它们是整数,但是如果以b
开头,我不明白为什么不将它们视为二进制。
不确定是否与此相关:https://bugs.python.org/issue24892
您必须在将连接您的字符串的字节对象上调用join,该对象应该为空,因此b''
(请注意,如果没有b
,您将有一个空的str
,并且在尝试时会出现错误将其与字节连接):
binary_size = b'\x00\x00\x00\x00'
binary_length = b'\xff\xff\xff'
joined = b''.join([binary_size, binary_length])
print(joined)
# b'\x00\x00\x00\x00\xff\xff\xff'
请注意,您可以简单地使用+
:
print(binary_size + binary_length)
# b'\x00\x00\x00\x00\xff\xff\xff'