2013-02-03 4 views
46

십진수를 다음 형식으로 16 진수로 변환하는 방법 (0x 접두어없이 두 자리 이상, 0으로 채워짐)?Python 16 진수

입력 : 255 출력 : ff

입력 : 2 출력 :

02 내가 hex(int)[2:]을 시도했지만 첫 번째 예는 아니지만 두 번째를 표시 것으로 보인다.

+0

[당신이 시도 무엇?] (http://whathaveyoutried.com) 나는이 질문을 downvoted 이유 : http://meta.stackexchange.com/a/149138/133242 –

+0

나는 hex (int) [2 :]하지만 첫 번째 예제를 표시하지만 두 번째 예제는 표시하지 않는 것 같습니다. –

+0

나는 그것을 얻었다! 감사합니다 –

답변

104

'02x' 형식의 format() function을 사용하십시오.

>>> format(255, '02x') 
'ff' 
>>> format(2, '02x') 
'02' 

02 부분 x는 소문자 16 진수를 의미 format() 적어도 2 자리를 사용하고, 길이를 패드에 0을 사용하여 말한다.

Format Specification Mini Language 또한 대문자 헥스 출력 X 부여하며 (만약 x 또는 X 포맷터로서 사용 어떠했는지에 따라 다름) 0x 또는 0X 프리픽스를 포함 #와 필드 폭 접두사있다.

>>> format(255, '02X') 
'FF' 
>>> format(255, '#04x') 
'0xff' 
>>> format(255, '#04X') 
'0XFF' 
+0

감사! 좋은 설명. –

+0

대문자 16 진수 출력을 사용하도록 형식을 설정하면 16 진수 접두사의 대문자 "X"에 문제가 있습니다. 귀하의 예에서는 그렇지 않습니다. 이 문제는 내 로컬 버전의 Python과 관련이 있습니까? 2.7.9 버전을 사용하고 있습니다. – jwp36

+0

@ jwp36 : 아니요, 제 대답에 실수였습니다. 이제는 바로 잡았습니다. 내 사과. –

15

을 나는 이것이 당신이 원하는 생각 : 그냥 당신이 그 여분이 개 문자를 허용하는 필드 폭을 조정할 필요가 고려

>>> def twoDigitHex(number): 
...  return '%02x' % number 
... 
>>> twoDigitHex(2) 
'02' 
>>> twoDigitHex(255) 
'ff' 
-7

첫 번째 대답은 최고입니다 만, 나는 고풍 대답하지만이 기능

>>> "".join(list(hex(255))[2:]) 
'ff' 
+2

다른 답변과 동일한 맥락에서 제로 패드가 아닙니다. 예를 들어'' ".join (list (hex (2)) [2 :])'는''02 ''가 아니라''2 ''로 평가됩니다. – therealrootuser

+1

이것은 질문의'hex (int) [2 :]'와 동의어입니다. 왜 다시 가입하기 만하면 될까요? – wjandrea

+0

더 나은 답변이 있다는 데 이미 동의하는 이유는 무엇입니까? – ryry1985