2013-03-08 7 views
4

Python에서 모든 문자를 일반 문자열 (모든 영어 알파벳 문자)에서 ascii 16 진수로 변환 할 수있는 파이썬 코드를 찾고 있습니다. 나는 내가 이것을 찾고 있었기 때문에 내가 이것을 잘못된 길로 묻고 있는지 확신 할 수 없다. 그러나 이것을 발견 할 수 없다.문자열의 모든 문자를 파이썬의 ascii 16 진수로 변환

답변을 전달해야하지만 도움이 될 것입니다.

그냥 '지옥'에서 명확하게하기에 '\ X48 \ X65 \ x6c \ x6c'나는 ''.join(r'\x{0:x}'.format(ord(c)) for c in mystring) 트릭을 할 것이라고 생각

답변

5

... 양자 택일 str.encode를 사용

>>> mystring = "Hello World" 
>>> print ''.join(r'\x{0:x}'.format(ord(c)) for c in mystring) 
\x48\x65\x6c\x6c\x6f\x20\x57\x6f\x72\x6c\x64 

또는 :

>>> print ''.join(r'\x'+c.encode('hex_codec') for c in mystring) 
\x48\x65\x6c\x6c\x6f\x20\x57\x6f\x72\x6c\x64 
+0

정말 고마워요! 하나님 내가 stackoverflow을 사랑해! – Echocage

+0

사이드 노트에서, 파이썬 버전 <2.6에서이 작업을 수행 할 수 있습니까? – Echocage

+1

'' '.join (mystring의 c에 대한'r '\ x % x'% ord (c))'는 아마도 적어도 python2.4로 돌아갈 것이라고 생각합니다. (list-comps가 도입 될 때마다) - 일반적으로 퍼포먼스 관점에서 Cpython의 생성자 표현식에 비해리스트 독해에 참여하는 것이 항상 더 좋다. 그래서 다소 추악한 스타일이 아닌 다른 것을 사용하는 데 아무런 해가 없다. – mgilson

1

시도 :

" ".join([hex(ord(x)) for x in myString]) 
+0

이것은 거의 작동하는 것처럼 보입니다.이 버전은 근사하게 2.6 버전에서 작동합니다. '\ x48 \ x65 \ x6c \ x6c'대신 '0x48 0x65 0x6c 0x6c'가 표시됩니다. 거의 수정을 완료했으나 누군가 수정 사항이 있으면보고 싶습니다. – Echocage

2

다음과 같음 :

>>> s = '123456' 
>>> from binascii import hexlify 
>>> hexlify(s) 
'313233343536' 
+0

좋은 해결책. 나는 이것이 최선의 대답이라고 생각한다. – SuB