pyusb を使用して USB 経由で受信した整数値の配列を 16 進値のリストに変換したいと思います。これらの 16 進値が常に 2 バイト、つまり 0x## になるようにしたいと思います。ただし、通常の hex() 関数は入力 1 で 0x1 を返します。0x01 を返したいと思います。
次に、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 進値が技術的にコード内の文字列だったため機能しませんでした。代わりに、16 進数に変換する for ループ全体をスキップし、Lavon と moooeeeep が提案したように直接実行しました。ありがとう!
hex_data = ('%02x' %i for i in data_read)
print ''.join(hex_data)
>>> a95680010080
構文に使用する適切なリファレンスはありますか? つまり、使用した「%02x」ですか? 私はそれを見たことがないので、もっとよく理解したいと思っています。