문자열이 x = '0x32'
이고 y = '\x32'
으로 바꾸고 싶습니다.
len(x) == 4
및 len(y) == 1
입니다.16 진수 문자열을 해당 코드 포인트를 가진 문자로 변환하는 방법은 무엇입니까?
나는 z = x.replace("0", "\\")
을 사용해 보았지만, z = '\\x32'
과 len(z) == 4
이 발생했습니다. 이것을 어떻게 할 수 있습니까?
문자열이 x = '0x32'
이고 y = '\x32'
으로 바꾸고 싶습니다.
len(x) == 4
및 len(y) == 1
입니다.16 진수 문자열을 해당 코드 포인트를 가진 문자로 변환하는 방법은 무엇입니까?
나는 z = x.replace("0", "\\")
을 사용해 보았지만, z = '\\x32'
과 len(z) == 4
이 발생했습니다. 이것을 어떻게 할 수 있습니까?
int(..,16)
을 사용하여 0x...
형태의 16 진수 문자열을 구문 분석 할 수 있습니다.
>>> chr(int(x,16))
'2'
그러나 \x32
입니다 :이 결과
y = chr(int(x,16))
: 다음 당신은 단순히 유니 코드 문자로 그 숫자를 변환 chr(..)
를 사용하여 코드 (그리고 경우에 코드가 128 미만 ASCII입니다) '2'
같음 (당신은 ASCII 테이블을 조회 할 수 있습니다) :
>>> chr(int(x,16)) == '\x32'
True
과 :
>>> len(chr(int(x,16)))
1
인용 부호가있는 문자열 안에 '\x32'
과 같은 코드 포인트를 포함 할 수있는 기능은 소스 코드 내의 리터럴 값에서만 작동하는 프로그래머에게 편리합니다. 메모리에서 문자열을 조작하면 해당 옵션을 더 이상 사용할 수 없지만 코드 포인트 값에 따라 문자열에 문자를 가져 오는 다른 방법이 있습니다.
또한 '\x32'
은 '2'
과 정확히 동일한 문자열을 나타냅니다. 다르게 입력 된 것입니다.
16 진수 리터럴을 포함하는 문자열이 주어지면 int(str,16)
으로 숫자 값으로 변환 할 수 있습니다. 숫자 값이 있으면 chr()
을 통해 해당 코드 포인트가있는 문자로 변환 할 수 있습니다. 그래서 모두 함께 넣어 :
x = '0x32'
print(chr(int(x,16)))
#=> 2
이 시도 :
z = x[2:].decode('hex')
뒤얽힌 제목에 대한 죄송합니다; 더 나은 표현 제안을 환영합니다. –