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

如何在Python中使用不带0x的hex()?,python,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') 使用此代码: '{:x}'.format(int(line)) 它还允许您指定位数: '{:06x}'.fo

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')
使用此代码:

'{:x}'.format(int(line))
它还允许您指定位数:

'{:06x}'.format(123)
# '00007b'
对于Python2.6,请使用

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


旧式字符串格式:

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

In [7]: '{:x}'.format(127)
Out[7]: '7f'
使用大写字母作为格式字符可生成大写十六进制

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

你只需写

hex(x)[2:]

删除前两个字符。

Python 3.6+:

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

虽然前面的所有答案都可以,但其中很多都有一些警告,比如不能同时处理正数和负数,或者只能在Python2或3中使用。以下版本适用于Python 2和Python 3以及正数和负数:

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


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

>>> format(3735928559, 'x')
'deadbeef'
>>> format(3735928559, 'X')
'DEADBEEF'
'X'-输出以16为底的数字,对9以上的数字使用大写字母

>>> format(3735928559, 'x')
'deadbeef'
>>> format(3735928559, 'X')
'DEADBEEF'
您可以在Python文档中找到更多关于这方面的信息:

你可以把
0x
切成片@AshwiniChaudhary我想他本质上是在问如何把0xtotal切成片,喜欢ole
deadbeef
的例子。而
format()
是最好的方法。我们可以切换到
c0ffee=format(12648430,'x')
。在Python3.8中,它是十六进制的默认示例。@Justlearnedit这是一个很酷的示例,我认为它在您的注释中是完美的:使用
format()
函数更容易,您没有使用任何模板功能,只使用格式。如果您的模板包含的所有值都是
{:…}
,请改为
格式(值,'..')
。使用
f.write('{:x}).格式(十六进制(int(line)))
,它会显示
ValueError:format
格式中的零长度字段名需要一个int,而不是字符串:
f.write('{:x}).格式(int(line)))
这对于以后的输出更改是不安全的。同样在Python 2中,它会产生奇怪的输出:
>>十六进制(3735928559)[2:
'deadbeefL'
@esseks:我怀疑他们会在下一个主要版本之前更改输出格式。无论如何,您都会遇到其他不兼容问题。如果
x
为负值,则会中断。
>>> format(3735928559, 'X')
'DEADBEEF'