python - 正好打包24位到unsigned / signed int

时间:2014-06-03 13:51:35

标签: python

我需要通过以太网连接发送24位,而另一端的程序在某些情况下需要unsigned int,而在其他情况下需要signed int(C类型)。我想使用struct类,但它没有内置3个字节的类型(如uint24_t)。

有人问过类似的问题,但答案总是涉及发送4个字节并用零填充数据包。但是,我不能这样做,因为我没有编写接收数据的程序,并且它希望完全 24位。

我对这种编程非常陌生,所以非常感谢帮助!

1 个答案:

答案 0 :(得分:2)

使用struct模块,创建一个包含三个8位字节的字符串。

import struct
# 24 bits: 01010101 10101010 11110000
byte1 = 0x55
byte2 = 0xaa
byte3 = 0xf0
data = struct.pack("BBB", byte1, byte2, byte3)

根据您获取发送位的方式,您可以直接定义字符串:

data = '\x55\xaa\xf0'