2017-11-26 15 views
3

탈출 무효.파이썬 및 String.format X 내가 파이썬 내부의 <code>x</code> 문자열을 포맷하기 위해 노력하고있어

내가 사용하는 경우 :

print '\x00\x00\xFF\x00' 

멋지게 인쇄 작동합니다. 내가 문자열의 형식을 시도 할 때 :

ValueError: invalid \x escape 

문제는이 같은 백 슬래시를 이스케이프 :

print '\\x{}\\x{}\\x{}\\x{}'.format('00','00','FF','00') 

그것은 인쇄 :

print '\x{}\x{}\x{}\x{}'.format('00','00','FF','00') 

을 나는이 오류가

\x00\x00\xFF\x00 

아닌 작은 은 서식이 지정되지 않은 문자열과 같습니다.

print chr(0x00),chr(0x00),chr(0xFF),chr(0x00) 또는 print bytearray([0x00, 0x00, 0xFF, 0x00])

인쇄 을하지만, 내가 그들을 포맷 할 때, 나는 구문 에러를 얻을 :

chrbytearray 예를 들어 흥미로운 것 같다.

하지만 여전히 붙어있어이 ...

어떻게 내부 \x으로 포맷 된 문자열을 인쇄 :

나는 몇 가지 흥미로운 게시물이 좋아 발견 ?

(I 파이썬 2.7을 사용하고 있지만, 나는 다른 버전을 사용할 수 있습니다.)

이 목적은 문자를 인쇄하는 형식 문자열, 16 진수 값의 지정된 문자열 표현을 만드는 것입니다 당신에게

답변

1

감사하는 유니 코드 코드 포인트에 해당 그래서이

for var1 in 'FF','00','38': 
    print '\x{}\x{}\x{}\x{}'.format(var1,'00','FF','00') 

출력됩니다 같은

�� � 8�

int 내장 함수를 사용하여 16 진수 값을 정수로 변환 한 다음 c 문자열 형식 코드를 사용하여 정수 값을 해당 유니 코드 문자로 변환하는 것이 트릭입니다. docs에서

for v in ('ff', '00', '38'): 
    print '{:c}{:c}{:c}{:c}'.format(*[int(x, 16) for x in [v, '00', 'ff', '00']]) 

�� 
� 
8� 

:

c : Character. Converts the integer to the corresponding unicode character before printing.