出力が常に2桁であるchrからhexへの変換を取得する方法を知っている人はいますか?
たとえば、私の変換で 0x1 が得られた場合、0x01
長い 16 進文字列を連結しているため、それを に変換する必要があります。
私が使用しているコードは次のとおりです。
hexStr += hex(ord(byteStr[i]))[2:]
出力が常に2桁であるchrからhexへの変換を取得する方法を知っている人はいますか?
たとえば、私の変換で 0x1 が得られた場合、0x01
長い 16 進文字列を連結しているため、それを に変換する必要があります。
私が使用しているコードは次のとおりです。
hexStr += hex(ord(byteStr[i]))[2:]
この目的のために文字列フォーマットを使用できます。
>>> "0x{:02x}".format(13)
'0x0d'
>>> "0x{:02x}".format(131)
'0x83'
編集: あなたのコードは、文字列を hexstring 表現に変換しようとしていることを示唆しています。これを行うには、もっと簡単な方法があります (Python2.x):
>>> "abcd".encode("hex")
'61626364'
代替手段 (Python 3.x でも機能します) は functionbinascii.hexlify()
です。
format 関数を使用できます。
>>> format(10, '02x')
'0a'
0x
その部分を削除する必要はありません( で行ったように[2:]
)
標準モジュールbinascii
も答えになる場合があります。つまり、長い文字列を変換する必要がある場合です。
>>> import binascii
>>> binascii.hexlify('abc\n')
'6162630a'
16進関数を使用する代わりにフォーマットを使用します。
>>> mychar = ord('a')
>>> hexstring = '%.2X' % mychar
数字の「2」を必要な桁数に変更し、「X」を「x」に変更して、16進数の英数字の大文字と小文字のどちらを表すかを選択することもできます。
多くの場合、これはPythonの古い%スタイルのフォーマットと見なされますが、フォーマット文字列の構文はCやJavaなどの他の言語で使用されているものと同じであるため、私は気に入っています。
最も簡単な方法(私が思う)は次のとおりです。
your_str = '0x%02X' % 10
print(your_str)
印刷されます:
0x0A
% の後の数字は、文字列内で 16 進数に変換されます。このようにすると、(私のように) C のバックグラウンドから来た人にとっては明らかだと思います。