2014-02-24 1 views
3

나는 예를 들어, 인쇄 및 인쇄 할 수없는 문자가 포함 된 문자열을 가지고있는 bytes 객체에이를 변환하는 가장 "pythonesque"방법은 무엇변환 3

'\xe8\x00\x00\x00\x00\x60\xfc\xe8\x89\x00\x00\x00\x60\x89' 

즉, 파이썬 3 : 모든 코드 포인트의 범위는 U + 0000 U에 + 00FF 내에있는 경우

b'\xe8\x00\x00\x00\x00`\xfc\xe8\x89\x00\x00\x00`\x89' 
+0

모든 문자는 0 ~ 255의 범위 내에서인가? –

답변

4

, 당신은 라틴 1로 인코딩 할 수 있습니다 :

inputstring.encode('latin1') 

은 Latin-1 표준에서 유니 코드 맵의 첫 번째 255 코드 포인트와 일대일 맵입니다.

이 방법은 가장 빠르지 만 그 범위를 벗어나는 입력 문자열의 문자에는 작동하지 않습니다.

기본적으로 디코딩되지 않아야하는 '바이트'가 포함 된 유니 코드를 얻은 경우 Latin-1로 인코딩하여 원래 바이트를 다시 가져옵니다.

데모 :

>>> '\xe8\x00\x00\x00\x00\x60\xfc\xe8\x89\x00\x00\x00\x60\x89'.encode('latin1') 
b'\xe8\x00\x00\x00\x00`\xfc\xe8\x89\x00\x00\x00`\x89'