2016-04-23 20 views
0

私はマイクロコントローラをI2C接続を介してコンピュータに接続しています。これは一度に1バイトのデータを戻します。私は、Pythonプログラムに4バイトの数字を送信しようとしています。私はこれを[123,45,67,89]のような個々のバイトの配列で受け取ります。Pythonのstructを使用して4バイトを整数に変換します

私はそれをPythonの整数に変換する必要があります。これを行うにはstruct.unpackを使用しようとしていますが、データ形式を正しく取得できません。私は形でそれを取得しようとしています:

struct.unpack("I",b'x12\x34\x56\x78) 

私は構造体で必要とされる形式に4つのバイトを取得する方法がわかりません。数字を16進数に変換することはできますが、それらを一緒に綴じる方法はわかりません。

+0

あなたが尋ねていることはかなり不明です。あなたはあなたの質問を編集し、もっと精巧にできますか? –

+0

私は改革しました。うまくいけばそれはより明確です。 – pekasus

答えて

3

bytearrayに変換してstruct.unpack()に渡すことができます。

import struct 

data = [123,45,67,89] 

# Show hex values of data. 
print(list('%2x'%b for b in data)) # -> ['7b', '2d', '43', '59'] 

# Convert to 4 byte unsigned integer. 
values = struct.unpack("I", bytearray(data)) 
print(hex(values[0])) # -> 0x59432d7b 
関連する問題