使用结构包带负数

2024-04-26 19:13:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用struct.pack将一个整数转换成网络顺序的2字节字符串。在

struct.pack("!H", -9890)

原因:

^{pr2}$

我真正的意思是struct.pack("!H", -9890 & 0xff),也就是说,取这个数的最后两个字节。有没有办法让struct以这种方式工作而不必每次都屏蔽输入?在


Tags: 字符串网络字节顺序方式原因整数struct
1条回答
网友
1楼 · 发布于 2024-04-26 19:13:53

您不能让struct为您做蒙版;您需要手动提供合适的整数。如果使用0xff屏蔽数字对您的应用程序有效,那么您就必须这样做。在

Python不会在这里为您猜测,Python整数是无界的,并且提供struct槽范围之外的整数不是一项需要猜测的工作。毕竟,如果生成的值超出范围,则可能是应用程序错误。如果超出范围的值应该使适合,则由您决定如何进行;屏蔽是一种方法,将值限制在边界(0或255)是另一种方法。在

引用Zen of Python中两行适用的行:

Explicit is better than implicit.

[...]

In the face of ambiguity, refuse the temptation to guess.

相关问题 更多 >