対私は、次のコマンドを実行したときに、私はがパックされたバイナリデータとして文字列を解釈し、Pythonのは、Java
>>> print ord(pack('>H', 32809)[0])
128
>>> print ord(pack('>H', 32809)[1])
41
を持っているPythonでプログラム
を翻訳するには、JavaやPythonでバイナリで少し苦労していますJavaでは
、私は次のコマンドを実行したときに同じ結果を持っていることを期待しますが、それはありません:128はJavaで負である理由
bsh % print ((byte)((32809 & 0xFF00) >> 8));
-128
bsh % print ((byte)(32809 & 0x00FF));
41
誰かが私に説明できますか? 多くのありがとうございます。
これは(バイト)128 = -128を意味しますか? – art1go
はい。 127からのインクリメントは "ラップアラウンド" - 127のビットパターンは0x7Fです。 1つ追加すると0x80となります。符号付きバイトとして解釈されますが、これは-128です。 +128を正しく表すために、符号付きバイトに十分なビットがありません。 –