struct.pack()失败,带有int> 127

时间:2014-11-07 20:51:01

标签: python sockets struct.pack

为什么

struct.pack("!bbbb", 0x2, r, g, b)
当r,g或b为>时,

我的python代码失败127?

我知道“b”表示根据struct docs,给定值的大小是1个字节,但为什么它会因值超过127而失败?

1 个答案:

答案 0 :(得分:3)

根据the documentationb代表:

  

签名字符

表示其有效范围为[-128,127]。这就是错误消息明确说明的内容:

>>> struct.pack("!bbbb", 0x2, 127, 127, 128)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
struct.error: byte format requires -128 <= number <= 127

使用B不会产生错误:

>>> struct.pack("!bbbB", 0x2, 127, 127, 128)
'\x02\x7f\x7f\x80'