python - struct.pack() 因 int > 127 失败

标签 python sockets struct.pack

为什么

struct.pack("!bbbb", 0x2, r, g, b)

当 r、g 或 b > 127 时,我的 Python 代码失败?

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

最佳答案

根据the documentationb代表:

signed char

表示其有效范围是[-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'

关于python - struct.pack() 因 int > 127 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26809855/

相关文章:

python - OpenCv Python SIFT-如何减少关键点的数量?

python - 我可以在 Golang 中加载经过 Python 训练的分类器吗?

python - python进程启动前的uwsgi Attach-daemon

python 结构包 double

python - struct.pack(f'{len(x)}s', x) 有什么作用吗?

python - 如何/应该如何在 Python/其他语言中管理跨包模块中的全局数据?

java - Socket.close() 在 Socket.connect() 期间无效

java.net.SocketException : Software caused connection abort: recv failed; Causes and cures? 异常

java - 使用 Java 设置 SO_EXCLUSIVEADDRUSE