我试图使用struct.pack将一个整数放入一个网络顺序的2字节字符串中。
struct.pack("!H", -9890)原因:
error: integer out of range for 'H' format code我真正的意思是struct.pack("!H", -9890 & 0xff),也就是取这个数字的最后两个字节。有没有一种方法可以让struct以这种方式运行,而不必每次都掩盖输入?
发布于 2014-11-30 01:44:25
您不能让struct为您做掩蔽;您需要手动提供适合您的整数。如果使用0xff隐藏数字对您的应用程序有效,那么您就必须这样做。
Python不会在这里猜测,Python整数是无界的,在struct插槽范围之外提供整数不是一项任由猜测的工作。毕竟,如果产生超出范围的值,则可能是应用程序错误。如果应该使范围以外的值适合,则由您来决定如何这样做;掩蔽是一种方法,将值限制在边界(0或255)是另一种方式。
引用Python的禅宗中适用的两行
外显好于内隐。 ..。 面对歧义,拒绝猜测的诱惑。
https://stackoverflow.com/questions/27209132
复制相似问题