파이썬에서 0x없이 hex ()를 사용하는 방법?


93

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')

2
당신은 슬라이스 수 있습니다 0x.
Ashwini Chaudhary 2013 년

3
@AshwiniChaudhary 나는 그가 본질적으로 0x를 슬라이스하는 방법을 묻고 있다고 생각합니다
광산

답변:


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

34
올레 deadbeef예를 좋아해야합니다 . 그리고 format()이것이 가장 좋은 방법입니다.
Martijn Pieters

로 전환 할 수 있습니다 c0ffee = format(12648430, 'x'). Python3.8에서는 16 진수의 기본 예입니다.
방금

@Justlearnedit 멋진 것입니다. 귀하의 의견에 완벽하다고 생각합니다. P
jamylak

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
마흐무드

format: int 형이 아닌 문자열이 필요f.write('{:x}'.format(int(line)))
eumiro

17

간단히 쓸 수 있습니다.

hex(x)[2:]

처음 두 문자를 제거합니다.


3
이는 향후 출력 변경에 대해 안전하지 않습니다.
Stefano Sanfilippo 2013 년

2
또한 긴 숫자를 가진 Python 2에서는 이상한 출력이 생성됩니다.>>> hex(3735928559)[2:] 'deadbeefL'
jamylak

@esseks : 다음 메이저 릴리스 전에 출력 형식을 변경할지 의심됩니다. 어쨌든 다른 비 호환성이 있습니다.
Janus Troelsen 2013 년

9
x음수 이면 중단됩니다 .
DSM


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.