python - 将24位精确打包成无符号/带符号整数
我需要通过以太网连接发送正好24位的数据,而接收端的程序在某些情况下需要无符号整数(unsigned int),在其他情况下需要有符号整数(signed int),这些都是C语言中的数据类型。我想使用结构体(struct),但是没有内置的3字节类型(像uint24_t这样的)。
类似的问题之前也有人问过,但答案总是涉及发送4字节,并用零填充数据包。不过,我不能这样做,因为我不是编写接收数据程序的人,而接收端恰好需要24位的数据。
我对这种编程方式还很陌生,所以希望能得到一些帮助!
1 个回答
3
使用 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'