我有以下数据
a1 = 0x5A - hex
a2 = 0x01 - hex
a3 = 12 - 十进制
a4 = 28 - 十进制
a5 =(a1到a4)的总和
我应该能够在字节数组中发送所有这些信息,并一次性使用ser.write命令发送。
目前我手动将a3和a4转换为十六进制,我使用的是这样的ser.write('\ x5A \ x01 \ x ... \ x ... \ x ...)
我想要一种方法,我可以将所有变量打包到单个字节数组中并说ser.write(bytearray)
ser ---是我的serial.Serial('COM1')
与ser.read相同 - 我得到的信息是字节数组 - 如何解码为十进制和十六进制
寻找使用binascii函数转换为字节数组和从字节数组转换回来
答案 0 :(得分:2)
您想要一串十六进制值吗?不确定。
a1 = 0x5A # hex
a2 = 0x01 # hex
a3 = 12 # decimal
a4 = 28 # decimal
a5 = sum((a1, a2, a3, a4))
int_array = [a1, a2, a3, a4, a5]
print(int_array)
hex_array = "".join(map(hex, int_array))
print(hex_array)
你会得到:
[90, 1, 12, 28, 131]
0x5a0x10xc0x1c0x83
使用array
类:
import array
byte_array = array.array('B', int_array)
print(byte_array)
print(byte_array.tostring())
你会得到:
array('B', [90, 1, 12, 28, 131])
b'Z\x01\x0c\x1c\x83'