我需要通过以太网连接发送24位,而另一端的程序在某些情况下需要unsigned int,而在其他情况下需要signed int(C类型)。我想使用struct类,但它没有内置3个字节的类型(如uint24_t)。
有人问过类似的问题,但答案总是涉及发送4个字节并用零填充数据包。但是,我不能这样做,因为我没有编写接收数据的程序,并且它希望完全 24位。
我对这种编程非常陌生,所以非常感谢帮助!
答案 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'