我正在尝试使用struct.pack
将整数转换为网络顺序2字节字符串。
struct.pack("!H", -9890)
导致:
error: integer out of range for 'H' format code
我的意思是struct.pack("!H", -9890 & 0xff)
,即取这个数字的最后两个字节。有没有办法让struct
以这种方式表现,而不必每次都掩盖输入?
答案 0 :(得分:2)
你无法让struct
为你掩饰;你需要手动提供适合的整数。如果使用0xff
屏蔽数字适用于您的应用程序,那么您就必须这样做。
Python不会在这里猜测,Python整数是无界的,并且提供struct
插槽范围之外的整数不是一个可以猜测的工作。毕竟,如果产生超出范围的值,则可能是应用程序错误。如果范围之外的值应该 以适合,那么由你决定如何做到这一点;掩蔽是一种方法,将值限制为边界(0或255)是另一种方式。
引用Zen of Python中的两个适用行:
明确比隐含更好。
[...]
面对模棱两可,拒绝猜测的诱惑。