python初心者です。
バイナリデータの扱いを学んでいるのですが、
以下のフォーマット文字の書き順で差異が生じるのはなぜでしょうか。
python
1import struct 2 3data = struct.pack('hb', 1,2) 4print(data) #b'\x01\x00\x02' 5print(len(data)) #3 6 7data = struct.pack('bh', 1,2) 8print(data) #b'\x01\x00\x02\x00' 9print(len(data)) #4
https://docs.python.org/ja/3/library/struct.html#struct-format-strings
フォーマット文字に'b'を指定すると1バイト分、'h'を指定すると2バイト分でパックするみたいなので合計3バイトになるのかなと思っていましたが、
なぜか後者の書き方では'bh'が4バイト分でパックされているようです。
あと、'l'は4バイト分のサイズみたいなのですが下記コードだと8バイトで出てるのも分かりません。
python
1data = struct.pack('l', 1) 2print(data) #b'\x01\x00\x00\x00\x00\x00\x00\x00' 3print(len(data)) #8
私の認識が間違っているのでしょうか。
以上、理由をご教示いただけますと幸いです。
皆様、ご回答頂きありがとうございます。
アライメントという言葉はよく理解していませんでした。
教えて頂いたリンク先を参考に、再度勉強してみます。
回答2件
あなたの回答
tips
プレビュー