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

lev*_*evi 3 python

我正在使用python做一个测试:

print struct.pack('1H', 101000)
Run Code Online (Sandbox Code Playgroud)

它向我显示了这个错误:

struct.error: ushort format requires 0 <= number <= USHRT_MAX

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

hob*_*bbs 6

最大值不是(2<<16) - 1,它是2 ^ 16 - 1.或者,如果你喜欢把它写成一个班次,(1<<16) - 1.二号已经向左移一个位置.无符号短路(16位)的最大值为65535.