내가하는 ctypes를 사용하고 난 매개 변수 그리고 ctype 구조체에서 파이썬 문자열을 어떻게 작성합니까?
class my_struct(ctypes.Structure):
_fields_ = [ ("buffer", ctypes.c_char * BUFSIZE),
("size", ctypes.c_int)]
나는 다음과 같은 코드를 사용하여 C 함수를 호출을 전달하기 위해이 구조체를 정의했습니다,하지만 난에서 문자열을 만드는 방법을 모른다 내가 만든 구조체.
class Client():
def __init__(self):
self.__proto = my_struct()
self.client = ctypes.cdll.LoadLibrary(r"I:\bin\client.dll")
def version(self):
ret = self.client.execute(ctypes.byref(self.__proto))
my_string = self.__proto.buffer[:self.__proto.size]
나는 (버퍼는 NULL 문자가 포함하지만 난이 상황을 처리 및/× 00 문자 경우 모든 necesary로 문자열을 만들어야합니다) 버퍼의 처음 n 바이트를 사용하여 파이썬 문자열을 만들려고합니다. × 00가 나타나면
my_string = self.__proto.buffer[:self.__proto.size]
이 bacause 작동하지 않는 asignation 문자열을 자릅니다. 어떤 생각이라도 환영합니다. 미리 감사드립니다.
파이썬 2.6.3에서는 버퍼와 같은 ctypes 배열을 만들었지 만 테스트 할 수 없습니다. 다음과 같은 구조 클래스를 만들 수 있습니다. 실제로 잘라 버리는 것을보십시오. 이렇게 : ar = (ctypes.c_char * 10)(); ar.value = "test"; assert ar [: 6] == 'test \ x00 \ x00'. 내가 놓친 게 있니? – aknuds1