Python 如何将整数列表转换为字节?

Python 如何将整数列表转换为字节?,python,python-3.x,Python,Python 3.x,我有一些表示字节的数字,我想从它们中创建一个bytes对象,例如b“something” 这是我的尝试,为了“做一些研究”的记录。我试着用谷歌搜索它,但只找到了另一个方向(bytes到数字列表)。我的目标是从4,5,6开始的b'\x04\x05\x06' intelhexlib只是因为我需要bytes对象 In [1]: from intelhex import IntelHex In [2]: ih = IntelHex() In [3]: addr=10 In [4]: a=5 In [5]

我有一些表示字节的数字,我想从它们中创建一个
bytes
对象,例如
b“something”

这是我的尝试,为了“做一些研究”的记录。我试着用谷歌搜索它,但只找到了另一个方向(
bytes
到数字列表)。我的目标是从4,5,6开始的
b'\x04\x05\x06'

intelhex
lib只是因为我需要
bytes
对象

In [1]: from intelhex import IntelHex
In [2]: ih = IntelHex()
In [3]: addr=10
In [4]: a=5
In [5]: b=4
In [6]: c=255

In [7]: ih.puts(addr, bytes(a, b, c))
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-7-def738bb7624> in <module>()
----> 1 ih.puts(addr, bytes(a, b, c))

TypeError: bytes() argument 2 must be str, not int

In [8]: ih.puts(addr, b'{}{}{}'.format(a, b, c))
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-8-eabba8aef324> in <module>()
----> 1 ih.puts(addr, b'{}{}{}'.format(a, b, c))

AttributeError: 'bytes' object has no attribute 'format'
[1]中的
:从intelhex导入intelhex
在[2]中:ih=IntelHex()
在[3]中:addr=10
在[4]中:a=5
在[5]中:b=4
在[6]中:c=255
In[7]:ih.put(addr,bytes(a,b,c))
---------------------------------------------------------------------------
TypeError回溯(最近一次调用上次)
在()
---->1 ih.puts(地址,字节(a,b,c))
TypeError:bytes()参数2必须是str,而不是int
[8]中:ih.put(addr,b'{}{}{}'.格式(a,b,c))
---------------------------------------------------------------------------
AttributeError回溯(最近一次呼叫上次)
在()
---->1 ih.puts(地址,b'{}{}}'。格式(a,b,c))
AttributeError:“字节”对象没有属性“格式”

我可能在这里犯了一些愚蠢的错误,
bytes()
函数应该可以做到这一点。

您可以使用
struct
模块。看

格式字符串信息如下:

因此,如果希望将每个数字存储为整数(字节顺序取决于平台):

或作为无符号字节:

>>> struct.pack("BBB", 5, 4, 255)
b'\x05\x04\xff'

您可以使用
struct
模块。看

格式字符串信息如下:

因此,如果希望将每个数字存储为整数(字节顺序取决于平台):

或作为无符号字节:

>>> struct.pack("BBB", 5, 4, 255)
b'\x05\x04\xff'

您可以使用struct模块

In [16]: ret = bytearray(struct.pack("B", a))

In [17]: ret
Out[17]: bytearray(b'\x05')

In [18]: ret.append(b)

In [19]: ret.append(c)

In [20]: ret
Out[20]: bytearray(b'\x05\x04\xff')

您可以使用struct模块

In [16]: ret = bytearray(struct.pack("B", a))

In [17]: ret
Out[17]: bytearray(b'\x05')

In [18]: ret.append(b)

In [19]: ret.append(c)

In [20]: ret
Out[20]: bytearray(b'\x05\x04\xff')

我发现了,真是个愚蠢的错误

我在那里找不到括号

In [8]: bytes([4,5,6])
Out[8]: b'\x04\x05\x06'

让它帮助未来的谷歌吧。

我发现了它,真是个愚蠢的错误

我在那里找不到括号

In [8]: bytes([4,5,6])
Out[8]: b'\x04\x05\x06'

让它帮助未来的谷歌用户。

你想让字节看起来像什么?你想让字节看起来像什么?它们是整数,但在0-255范围内,实际上只是字节。看起来不错。。奇怪的是,这么简单的事情就这么复杂tho@MightyPork:在C中很简单,因为在C中字符“只是整数”。这在Python中并不是那么简单,因为在Python中字符是“短字符串”,所以你必须做一些额外的事情才能从integer.nvm中得到它,我发现了如何做到这一点。我需要[]左右的字节。还是很好的提示,请不要删除它,这很有用。它们是整数,但在0-255范围内,实际上只是字节。看起来不错。。奇怪的是,这么简单的事情就这么复杂tho@MightyPork:在C中很简单,因为在C中字符“只是整数”。这在Python中并不是那么简单,因为在Python中字符是“短字符串”,所以你必须做一些额外的事情才能从integer.nvm中得到它,我发现了如何做到这一点。我需要[]左右的字节。还是很好的提示,请不要删除它,它很有用。