你可以使用
bytes
bult-in并传递序列。
>>> ch=[1, 2, 3, 4, 20, 25]
>>> bytes(ch)
b'\x01\x02\x03\x04\x14\x19'
顺便说一下,你所显示的是一个Python列表,而不是一个numpy数组。
但是,如果你想对numpy数组进行操作,你可以先将其转换为一个python列表。
>>> bytes(np.array(ch).tolist())
b'\x01\x02\x03\x04\x14\x19'
当你直接对上述数据的numpy数组尝试to_bytes()
时。
>>> np.array(ch).tobytes()
b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x14\x00\x00\x00\x19\x00\x00\x00'
上面的输出也是对的,唯一的区别是由于数据类型的不同,如果你打印出来,你会知道是numpy.int32
,32位意味着32/8=4字节,即表示每个值所需的字节数。
>>> np.array(ch).dtype
dtype('int32')
如果你将其转换为8位,即1个字节的数字,输出结果将与使用bytes
在一个列表上的bultin相同。
>>> np.array(ch).astype(np.int8).tobytes()
b'\x01\x02\x03\x04\x14\x19'