質問: ord(pcap.read(1)) * 256 + ord(pcap.read(1)) ``` とすると正確な数値が得られます。 これをstructで成功させるにはどうすればいいですか? ご回答お待ちしております。
回答: そもそも、short型では45162はオーバーフローします。unsigned short型(H)である必要があります。 また、上位バイトが先なら、エンディアン指定で、ビッグエンディアン(>)を指定する必要があります。 つまり、`'>H'`。 pcapという文字が見えるので、ネットワークのデータなのでしょうか?そうであれば、同じくビッグエンディアンですが、ネットワークオーダーであることを示すために、`'!H'`の方が良いかと。 ``` answer = int(struct.unpack('!H',pcap.read(2))[0]) ``` 詳しくは、pack/unpackのリファレンスを見てください。 int()は要るのかなぁ?