Pythonで0xなしでhex()を使用する方法は?


92

hex()Pythonの関数0xは、数字の前に先頭の文字を置きます。とにかくそれらを置かないように言うことはありますか?だからに0xfa230なりますfa230

コードは

import fileinput
f = open('hexa', 'w')
for line in fileinput.input(['pattern0.txt']):
   f.write(hex(int(line)))
   f.write('\n')

2
をスライスできます0x
Ashwini Chaudhary 2013年

3
@AshwiniChaudhary彼は本質的に0xをスライスする方法を尋ねていると思います
鉱山

回答:



58

このコードを使用します:

'{:x}'.format(int(line))

桁数も指定できます。

'{:06x}'.format(123)
# '00007b'

Python2.6の場合は

'{0:x}'.format(int(line))

または

'{0:06x}'.format(int(line))

8
このformat()関数の使用は簡単で、テンプレート機能は使用せず、フォーマットのみを使用します。すべてのテンプレートが含まれている場合である{:..}ため1つの値、への移行format(value, '..')の代わりに。
MartijnPieters

を使用してf.write('{:x}'.format(hex(int(line))))、それは言うValueError: zero length field name in format
mahmood 2013年

format文字列ではなくintが必要です:f.write('{:x}'.format(int(line)))
eumiro 2013年

17

あなたは単に書くことができます

hex(x)[2:]

最初の2文字を削除します。


3
これは、出力の将来の変更に対して安全ではありません。
ステファノサンフィリッポ2013年

2
また、Pythonの2の長い数字でそれは奇妙な出力に含まを生成します:>>> hex(3735928559)[2:] 'deadbeefL'
jamylak

@esseks:次のメジャーリリースの前に出力フォーマットが変更されるとは思えません。とにかく、他の非互換性があります。
Janus Troelsen 2013年

9
xが負の場合、これは壊れます。
DSM 2013年


7

古いスタイルの文字列フォーマット:

In [3]: "%02x" % 127
Out[3]: '7f'

新しいスタイル

In [7]: '{:x}'.format(127)
Out[7]: '7f'

フォーマット文字として大文字を使用すると、大文字の16進数が生成されます

In [8]: '{:X}'.format(127)
Out[8]: '7F'

ドキュメントはこちらです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.