2013-05-07 64 views
44

python中的hex()函數,將前導字符0x放在數字的前面。無論如何要告訴它不要放它們?所以0xfa230將是fa230如何在Python中使用不帶0x的十六進制()?

的代碼是

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

您可以切分「0x」。 – 2013-05-07 08:30:16

回答

93
>>> format(3735928559, 'x') 
'deadbeef' 
+24

愛得到'deadbeef'的例子。 'format()'是做這件事的最好方法。 – 2013-05-07 08:32:06

+2

格式參數應該是'int'。謝謝 – mahmood 2013-05-07 08:39:18

+2

格式(2976579765,「x」) – Speccy 2015-11-12 16:37:49

35

使用此代碼:

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

它允許你指定的位數太多:

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

對於Python 2.6使用

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

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

使用'format()'函數更容易,您沒有使用任何模板功能,只使用格式。如果您的所有模板都包含'{:..}'用於* one *值,則轉而使用format(value,'..')'。 – 2013-05-07 08:33:19

+0

使用'f.write('{:x}'.format(hex(int(line))))',它表示'ValueError:零長度字段名稱格式' – mahmood 2013-05-07 08:34:50

+0

'format'需要一個int,而不是一個字符串:'f.write('{:x}'.format(int(line)))' – eumiro 2013-05-07 08:35:59

4

舊風格的字符串格式化:

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

新款

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

使用大寫字母作爲格式字符產生大寫十六進制

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

Docs在這裏。

8

你可以簡單地寫

hex(x)[2:] 

率先拿到兩個字符刪除。

+0

這對於未來產出的變化是不安全的。 – 2013-05-07 08:35:28

+1

但它很容易.... – mahmood 2013-05-07 08:35:45

+1

同樣在Python 2中,長數字會產生奇怪的輸出:>>> hex(3735928559)[2:]' ''deadbeefL'' – jamylak 2013-05-07 08:39:48

相關問題