文字列を 16 進文字列に変換する必要がdata = "00000111010110101"
あります。この例では、「075A80」が必要です。
いくつかの注意事項があります。
- 先頭のゼロを削除してはならないので、 hex(int(data,2)) は機能しません
- len(data) %8 != 0 の場合、文字列にゼロを追加して、完全なバイトで終了する必要があります
このフォーラムを検索してさまざまな回答をハックした後、これが私が見つけた 1 つの方法ですが、かなり複雑に思えます。他の誰かがもっと簡単な方法を見つけてくれることを願っています。
data_hex = "".join([ "%02X" % int("".join(a),2) for a in izip_longest(*(iter(data),)*8, fillvalue='0')])
ありがとう!
編集:データの背景。基礎となるデータは純粋なビットであり、整数やその他の数値を表すものではないため、先行ゼロが関連しており、結果で表す必要があります。また、(右)端にゼロを追加しても、私のユースケースでは「値」は変わりません。