파이썬 문자열 인코딩에 관련한 질문입니다.

xxaker의 이미지

def getUnicode(cp949_str): 
    unicode_str="" 
    i =0 
 
    #문자열 형식 지정 
    while i < len(cp949_str)-1 : 
        unicode_str += "\\x" + cp949_str[i] + cp949_str[i+1] 
        i += 2 
    result = unicode_str.decode('cp949') 
 
    #테스트 값 출력 
    print("\x46\x4f\x52\x4d\x41\x54".decode('cp949')) 
    return result 

인자로 받는 cp949_str가

464f524d4154

일 경우

코드 중간에 삽입한

print("\x46\x4f\x52\x4d\x41\x54".decode('cp949'))

의 결과인 "FORMAT" 출력되는 것과는 달리

문자열 그대로 \x46\x4f\x52\x4d\x41\x54 으로 출력이 됩니다.

길이를 각각 출력해도 24, 6 으로 출력됩니다.

인자값이 464f524d4154 으로 넘어올때 FORMAT 으로 출력할 수 있게 하는 방법은 없을까요?

xxaker의 이미지

while 문을 통해 거쳐 나온 "\x46\x4f\x52\x4d\x41\x54" 이란 스트링을

print("\x46\x4f\x52\x4d\x41\x54".decode('cp949'))에서 쓰인 "\x46\x4f\x52\x4d\x41\x54" 과 같은 의미로 쓰고 싶습니다.

도와주세요. ㅠㅠ

cinsk의 이미지

def getUnicode(src):
    result = ""
    for i in range(0, len(src), 2):
        result += "%c" % ((int(src[i], 16) << 4) + int(src[i + 1], 16))
    return result

--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/

7339989b62a014c4ce6e31b3540bc7b5f06455024f22753f6235c935e8e5의 이미지

'464f524d4154'.decode('hex')

:-)

---8< 서명 -----------------
애니메이션 감상 기록 http://animeta.net/

cinsk의 이미지