Python
error
Endian
Binary

Python3 > struct パッケージ > TypeError: a bytes-like object is required, not 'int' | bytes-like objectのリテラル定義 | unpackできた

動作環境
ideone > Python 3.5

とあるセンサーの測定値読取りコード(at GitHub)においてstructのpack(), unpack()を使っている例がある。

structは使ったことがないので、試用してみる。

(追記 2018/02/27)
pack()の方は使ったことがあったが、忘れていた。。。

code v0.1 > TypeError: a bytes-like object is required, not 'int'

https://ideone.com/8pf6Is

import struct

pi = 0x3141

msb, lsb = struct.unpack('>HB', pi)
print(msb)
print(lsb)

run
Traceback (most recent call last):
  File "./prog.py", line 5, in <module>
TypeError: a bytes-like object is required, not 'int'

code v0.2 > unpackできた

  • little endianで
  • unsigned short(H)をmsbとして
  • unsigned char(B)をlsbとして
  • 取得する

https://ideone.com/wxvVPs

import struct

#pi = 0x3141
pi = b'\x31\x41\x59'

msb, lsb = struct.unpack('>HB', pi)
print(msb)  # 12609 (0x3141)
print(lsb)  # 89 (0x59)

run
12609
89

link