私は、pyusbを使ってUSB経由で受け取った整数値の配列を16進値のリストに変換したいと思います。これらの16進数の値には常に2バイト、つまり0x ##が必要です。しかし、通常のhex()関数は1の入力で0x1を返します。私は0x01を返したいと思います。整数を16進数に変換して結果を常に2バイトにする
その後、16進値のリストを作成した後、それらを一緒に追加して、 '0x'部分を捨ててしまいます。これは私が現在持っている、非常に簡単です。
data_read = dev.read(0x82,64,0,1000)
hex_data = range(0,len(data_read))
for i in range(0,len(data_read)):
hex_data[i] = hex(data_read[i])
私はそれをすくい取ることができますし、それはやっかいな方法ですが、私はそれを行う適切な方法があることを望んでいました。ありがとうございました。
更新:結果進値が技術的に私のコード内の文字列だったので、
data_read = dev.read(0x82,64)
print data_read
>>> array('B', [169, 86, 128, 1, 0, 128])
for i in range(0,len(data_read)):
hex_data[i] = hex(data_read[i])
print hex_data
>>> ['0xa9', '0x56', '0x80', '0x1', '0x0', '0x80']
Lavonによって提案された方法では動作しませんでしたか?代わりに私はちょうど16進に変換するループのために私の全体をスキップし、Lavonとmoooeeeepが示唆したように直接行いました。ありがとう!
hex_data = ('%02x' %i for i in data_read)
print ''.join(hex_data)
>>> a95680010080
構文に使用する参考になりますか?あなたが使用した '%02x'ですか?私はそれを以前に見たことがなく、それをよりよく理解したいと思います。
を行うにはちょうど別の方法:@moooeeeepにより示唆されるように
また、ここで発電機を使用したソリューションですこれらはバイトではありません。それらは[ニブル](http://en.wikipedia.org/wiki/Nibble)です。 – senderle
'dev.read(0x82,64,0,1000)'には、すべて16進値か、先頭に '0x'を付けた値だけですか? –
@senderle yeah brain fart there、late day – raymond