2024-04-26 19:13:53 发布
网友
我试图使用struct.pack将一个整数转换成网络顺序的2字节字符串。在
struct.pack
struct.pack("!H", -9890)
原因:
我真正的意思是struct.pack("!H", -9890 & 0xff),也就是说,取这个数的最后两个字节。有没有办法让struct以这种方式工作而不必每次都屏蔽输入?在
struct.pack("!H", -9890 & 0xff)
struct
您不能让struct为您做蒙版;您需要手动提供合适的整数。如果使用0xff屏蔽数字对您的应用程序有效,那么您就必须这样做。在
0xff
Python不会在这里为您猜测,Python整数是无界的,并且提供struct槽范围之外的整数不是一项需要猜测的工作。毕竟,如果生成的值超出范围,则可能是应用程序错误。如果超出范围的值应该使适合,则由您决定如何进行;屏蔽是一种方法,将值限制在边界(0或255)是另一种方法。在
引用Zen of Python中两行适用的行:
Explicit is better than implicit.[...]In the face of ambiguity, refuse the temptation to guess.
Explicit is better than implicit.
[...]
In the face of ambiguity, refuse the temptation to guess.
您不能让
struct
为您做蒙版;您需要手动提供合适的整数。如果使用0xff
屏蔽数字对您的应用程序有效,那么您就必须这样做。在Python不会在这里为您猜测,Python整数是无界的,并且提供
struct
槽范围之外的整数不是一项需要猜测的工作。毕竟,如果生成的值超出范围,则可能是应用程序错误。如果超出范围的值应该使适合,则由您决定如何进行;屏蔽是一种方法,将值限制在边界(0或255)是另一种方法。在引用Zen of Python中两行适用的行:
相关问题 更多 >
编程相关推荐