답변:
chr
기능을 찾고 있습니다.
정수의 10 진수 표현과 정수의 16 진수 표현을 혼합하는 것처럼 보이므로 필요한 것이 완전히 명확하지 않습니다. 귀하가 제공 한 설명을 바탕으로,이 스 니펫 중 하나가 원하는 것을 보여줍니다.
>>> chr(0x65) == '\x65'
True
>>> hex(65)
'0x41'
>>> chr(65) == '\x41'
True
이것은 정수를 hex로 포함하는 문자열 과는 상당히 다릅니다 . 그것이 원하는 것이라면 hex
내장을 사용하십시오 .
chr
는 ASCII를 전혀 포함하지 않습니다. 단순히 숫자를 가져 와서 바이트의 서수 값이 숫자 인 1 바이트 바이트 문자열을 만듭니다. 바이트 열을 작성하고 표시 할 때 ASCII 및 ASCII 호환 인코딩이 작동합니다.
'A'
다른 방법으로 작성하고 표시하여 들어옵니다 '\x41'
. 모두가 str
정말 약이 육십 오 인 사실은 관심. 인간이 이해하고 사용할 수 있도록하기 위해 종종 A가됩니다.
repr(chr(255)) # '\xff'
또한 달성
시험:
"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
임의의 정수가 시작 부분에 #이있는 6 자리 16 진수 문자열로 변환되기를 원했습니다. 이것을 얻기 위해 나는 사용했다.
"#%6x" % random.randint(0xFFFFFF)
"#%6x" % random.randint(0x0, 0xFFFFFF)
. (가 누락이다 %
전 6
및 randint
2 개 파라미터 저급 상부 bounds- 소요)
와 format()
당, 형식 - 예 , 우리는 할 수 있습니다 :
>>> # format also supports binary numbers
>>> "int: {0:d}; hex: {0:x}; oct: {0:o}; bin: {0:b}".format(42)
'int: 42; hex: 2a; oct: 52; bin: 101010'
>>> # with 0x, 0o, or 0b as prefix:
>>> "int: {0:d}; hex: {0:#x}; oct: {0:#o}; bin: {0:#b}".format(42)
'int: 42; hex: 0x2a; oct: 0o52; bin: 0b101010'