33

出力が常に2桁であるchrからhexへの変換を取得する方法を知っている人はいますか?

たとえば、私の変換で 0x1 が得られた場合、0x01長い 16 進文字列を連結しているため、それを に変換する必要があります。

私が使用しているコードは次のとおりです。

hexStr += hex(ord(byteStr[i]))[2:]
4

7 に答える 7

61

この目的のために文字列フォーマットを使用できます。

>>> "0x{:02x}".format(13)
'0x0d'

>>> "0x{:02x}".format(131)
'0x83'

編集: あなたのコードは、文字列を hexstring 表現に変換しようとしていることを示唆しています。これを行うには、もっと簡単な方法があります (Python2.x):

>>> "abcd".encode("hex")
'61626364'

代替手段 (Python 3.x でも機能します) は functionbinascii.hexlify()です。

于 2012-07-26T19:46:35.897 に答える
17

format 関数を使用できます。

>>> format(10, '02x')
'0a'

0xその部分を削除する必要はありません( で行ったように[2:]

于 2012-07-26T19:46:30.420 に答える
4

標準モジュールbinasciiも答えになる場合があります。つまり、長い文字列を変換する必要がある場合です。

>>> import binascii
>>> binascii.hexlify('abc\n')
'6162630a'
于 2012-07-26T20:06:40.547 に答える
2

16進関数を使用する代わりにフォーマットを使用します。

>>> mychar = ord('a')
>>> hexstring = '%.2X' % mychar

数字の「2」を必要な桁数に変更し、「X」を「x」に変更して、16進数の英数字の大文字と小文字のどちらを表すかを選択することもできます。

多くの場合、これはPythonの古い%スタイルのフォーマットと見なされますが、フォーマット文字列の構文はCやJavaなどの他の言語で使用されているものと同じであるため、私は気に入っています。

于 2012-07-26T20:00:24.387 に答える
1

最も簡単な方法(私が思う)は次のとおりです。

your_str = '0x%02X' % 10
print(your_str)

印刷されます:

0x0A

% の後の数字は、文字列内で 16 進数に変換されます。このようにすると、(私のように) C のバックグラウンドから来た人にとっては明らかだと思います。

于 2017-07-14T11:58:29.037 に答える