如何在Python中从整数创建字节值?

如何在Python中从整数创建字节值?,python,serial-port,arduino,pyserial,Python,Serial Port,Arduino,Pyserial,背景:我需要将一个数值作为字节发送到外部设备,但我遇到了一个问题。 我的代码是: ser=serial.Serial("COM3",9600, timeout=0) ser.write(value) 其中“value”是我读过的int。问题是,当我发送这个时,它发送的是字符值,而不是实际值(它发送数字5的字节值31,因为我相信这是它的unicode位置) 实际上,我希望能够将字符“\x05”发送给它。我想我的问题是,如何使用内置函数将and int 5转换为字符“\x05”,或将37转换为“\

背景:我需要将一个数值作为字节发送到外部设备,但我遇到了一个问题。 我的代码是:

ser=serial.Serial("COM3",9600, timeout=0)
ser.write(value)
其中“value”是我读过的int。问题是,当我发送这个时,它发送的是字符值,而不是实际值(它发送数字5的字节值31,因为我相信这是它的unicode位置)

实际上,我希望能够将字符“\x05”发送给它。我想我的问题是,如何使用内置函数将and int 5转换为字符“\x05”,或将37转换为“\x37”

如果你有一个这样的整数列表需要发送,你可以考虑使用.< /P> 或者,在较新版本的Python中,您可以简单地使用

字节
类型。

您可以使用此类型

bytes(chr(my_int))    # not strictly correct unless 0<=my_int<=255
bytes((my_int,))

bytes(chr(my_int))#不是严格正确的,除非0第一个失败,至少在Python 3中是这样,因为它试图将字符串转换为字节而不指定编码。(请读者注意,看看编码问题对您来说是否是新问题。)第二个很好用。如果用于创建元组的尾部逗号看起来不好,您也可以执行类似于
字节([5])
的操作。第二个逗号在Python 2中失败,其中
字节((1,)
返回字符串
”(1,)
。在Python3下,返回
b'\x01'
。因此,如果希望同时支持Python2和Python3,请不要使用这两种语言。