なぜですか
struct.pack("!bbbb", 0x2, r, g, b)
r、g、または b が > 127 の場合、Python コードで失敗しますか?
「b」は、構造体のドキュメントによると、特定の値のサイズが 1 バイトであることを意味しますが、127 を超える値で失敗するのはなぜですか?
なぜですか
struct.pack("!bbbb", 0x2, r, g, b)
r、g、または b が > 127 の場合、Python コードで失敗しますか?
「b」は、構造体のドキュメントによると、特定の値のサイズが 1 バイトであることを意味しますが、127 を超える値で失敗するのはなぜですか?
ドキュメントによると、 は次のb
略です。
署名された文字
つまり、有効な範囲は [-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'