2017-02-08 1 views
3

파이썬으로 문자열을 만들고이를 wrapped C lib에 전달해야합니다.Cython으로 문자열을 Byte로 C로 변환

def test(): 
    PATH = '/usr/lib/libnx.so' 
    PATH = <char*>PATH 
    load(PATH) 

하지만 내가 얻을 : 다음 .pyx 파일에서

unsigned char load(char const *FileName) 

다음 C lib 디렉토리는 함수를 정의 내가 파이썬 문자열을 암호화하는 시도했지만 같은 오류가 발생했습니다 TypeError: expected bytes, str found

.

+0

함수 .encode()를 수정해야 –

답변

3

파이썬에서 str 개체는 C처럼 바이트 배열이 아닙니다.이를 얻으려면 문자열을 인코딩해야합니다. 기본값은 ASCII와 역 호환되는 UTF-8 인코딩입니다.

  • 옵션 1 :

    여기 바이트의 배열을 전달하는 두 가지 방법에서 bytes 객체로 PATH 정의를 얻을 - 이동 :

    • PATH = b'/usr/lib/libnx.so', 또는 :
    • PATH = 'usr/lib/libnx.so'.encode()
  • 옵션 2 : PATH을 바이트 arr 님 당신이 그것을 통과 할 때 :
    • load(PATH.encode())
+0

이는 것 같아,하지만 난 같은 오류가 무엇을 얻을 것이다. – BAR

+0

'PATH.encode()'행 – BAR

+0

네,하지만 오류 행은'load (PATH)'의 행으로 바뀌 었습니다. – BAR