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


92

hex()python中的函数将前导字符0x放在数字前面。无论如何,有没有告诉它不要放它们?所以0xfa230fa230

该代码是

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

3
@AshwiniChaudhary我认为他本质上是在问如何对0x进行切片
Mine

Answers:



58

使用此代码:

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

它也允许您指定数字位数:

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

对于Python 2.6使用

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

要么

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

8
使用该format()功能比较容易,您不需要使用任何模板功能,而只需要格式化。如果你的所有模板包含是{:..}一个数值,移动format(value, '..')代替。
的Martijn Pieters的

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

17

你可以简单地写

hex(x)[2:]

删除前两个字符。


3
这对于将来输出的变化是不安全的。
Stefano Sanfilippo,

2
同样在具有长数字的Python 2中,它>>> hex(3735928559)[2:] 'deadbeefL'
也会

@esseks:我怀疑他们会在下一个主要版本之前更改输出格式。无论如何,您还会遇到其他不兼容问题。
Janus Troelsen

9
如果x为负,则将中断。
DSM


7

旧样式的字符串格式:

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

新风格

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

使用大写字母作为格式字符会产生大写十六进制

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

文件在这里。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.