3

我正在使用 python 进行一项测试:

print struct.pack('1H', 101000)

它向我显示了这个错误:

struct.error: ushort 格式需要 0 <= number <= USHRT_MAX

我对此感到困惑,因为我知道 1H 表示无符号短,这意味着可以使用第一位,所以 1H 的最大范围应该是 0 <= number <= (2 << 16) - 1 (这意味着 131071) ,那么为什么它会显示这个错误?

4

1 回答 1

8

最大值不是(2<<16) - 1,而是 2^16 - 1。或者,如果您更喜欢将其写为移位,则(1<<16) - 1. 数字二已经向左移动了一位。unsigned short(16 位)的最大值为 65535。

于 2013-07-19T01:36:39.277 回答