[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
답변
답변
시험:
"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