[python] int를 16 진수 문자열로 변환하는 방법은 무엇입니까?

16 진수 문자열 표현으로 정수 (<255)를 가져 가고 싶습니다.

예를 들면 : 나는에 전달하려는 65밖으로 얻을 '\x41', 또는 255얻을 '\xff'.

나는 struct.pack('c',65로 이것을 시도했지만 단일 문자열을 취하기를 원하기 때문에 )위의 모든 것에 질식 9합니다.



답변

chr기능을 찾고 있습니다.

정수의 10 진수 표현과 정수의 16 진수 표현을 혼합하는 것처럼 보이므로 필요한 것이 완전히 명확하지 않습니다. 귀하가 제공 한 설명을 바탕으로,이 스 니펫 중 하나가 원하는 것을 보여줍니다.

>>> chr(0x65) == '\x65'
True


>>> hex(65)
'0x41'
>>> chr(65) == '\x41'
True

이것은 정수를 hex로 포함하는 문자열 과는 상당히 다릅니다 . 그것이 원하는 것이라면 hex내장을 사용하십시오 .


답변

이것은 정수를 0x 접두사를 가진 2 자리 16 진 문자열로 변환합니다 :

strHex = "0x%0.2X" % 255


답변

무엇에 대해 hex()?

hex(255)  # 0xff

정말로 \앞에두고 싶다면 다음을 수행하십시오.

print '\\' + hex(255)[1:]


답변

시험:

"0x%x" % 255 # => 0xff

또는

"0x%X" % 255 # => 0xFF

파이썬 문서는 “베개 아래에 보관 하십시오 : http://docs.python.org/library/index.html


답변

때로는 하나의 숫자 표현 만 원하기 때문에 이것을 추가하겠습니다.

'{:x}'.format(15)
> f

이제 새로운 f''형식 문자열을 사용하여 다음을 수행 할 수 있습니다.

f'{15:x}'
> f

참고 : 초기 ‘f’ f'{15:x}'는 형식 문자열을 나타내는 것입니다


답변

<255 (1 바이트 부호없는 uint8_t) 값으로 구조체를 패킹하고 한 문자의 문자열로 끝내려면 c 대신 B 형식을 찾고 있습니다. C는 문자를 문자열로 변환하지만 (그 자체로는 너무 유용하지는 않지만) B는 정수를 변환합니다.

struct.pack('B', 65)

(그렇습니다. 65는 \ x65가 아니라 \ x41입니다.)

구조체 클래스는 또한 의사 소통이나 다른 용도로 엔디안을 편리하게 처리합니다.


답변

큰 값의 경우 hex()여전히 작동합니다 (일부 다른 답변은 작동하지 않음).

x = hex(349593196107334030177678842158399357)
print(x)

파이썬 2 : 0x4354467b746f6f5f736d616c6c3f7dL
파이썬 3 :0x4354467b746f6f5f736d616c6c3f7d

해독 된 RSA 메시지의 경우 다음을 수행 할 수 있습니다.

import binascii

hexadecimals = hex(349593196107334030177678842158399357)

print(binascii.unhexlify(hexadecimals[2:-1])) # python 2
print(binascii.unhexlify(hexadecimals[2:])) # python 3