如何在Python中使用不带0x的hex()?

时间:2013-05-07 08:28:38

标签: python

python中的hex()函数将前导字符0x放在数字前面。无论如何要告诉它不要把它们放?因此0xfa230将是fa230

代码是

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

8 个答案:

答案 0 :(得分:136)

>>> format(3735928559, 'x')
'deadbeef'

答案 1 :(得分:47)

使用此代码:

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

它允许您指定一些数字:

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

对于Python 2.6,请使用

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

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

答案 2 :(得分:12)

你可以简单地写

hex(x)[2:]

删除前两个字符。

答案 3 :(得分: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在这里。

答案 4 :(得分:2)

Python 3.6 +:

>>> i = 240
>>> f'{i:02x}'
'f0'

答案 5 :(得分:1)

'x' - 输出以 16 为基数的数字,对 9 以上的数字使用小写字母。

>>> format(3735928559, 'x')
'deadbeef'

'X' - 输出以 16 为基数的数字,对 9 以上的数字使用大写字母。

>>> format(3735928559, 'X')
'DEADBEEF'

您可以在 Python 的文档中找到更多相关信息: https://docs.python.org/3.8/library/string.html#formatspec https://docs.python.org/3.8/library/functions.html#format

答案 6 :(得分:0)

虽然之前的所有答案都有效,但其中很多都存在警告,例如无法同时处理正数和负数或仅适用于 Python 2 或 3。以下版本适用于 Python 2 和 3,并且适用于正数和负数:

由于 Python 从 hex() 返回一个字符串十六进制值,我们可以使用 string.replace 删除 0x 字符,而不管它们在字符串中的位置(这很重要,因为正数和负数不同)。

hexValue = hexValue.replace('0x','')

答案 7 :(得分:0)

十进制转十六进制, 成功了

hex(number).lstrip("0x").rstrip("L")