我目前有以下操作:
a = 'cat\x00 '
格式为unicode(默认的Python 3字符串格式)。我希望将其转换为ASCII。到目前为止,我已经尝试过这个:
a = bytes(a, 'ascii')
print(a)
OUT: b'cat\x00 '
使用byes命令转换' a'进入原始字符串而不是执行' \ x'逃避性格。有没有办法可以转换' a'执行十六进制转换后的ASCII?
我需要' a'对于ctypes:
ct.c_char_p(a)
答案 0 :(得分:0)
只需传递b'cat'
或'cat'.encode()
即可。两者都将以空终止的字节串传递给c_char_p
ctypes参数。您不需要自己添加null。
在void func(const char* s)
中致电some.dll
的示例:
from ctypes import *
dll = CDLL('some.dll')
dll.func.argtypes = [c_char_p]
dll.func.restype = None
dll.func(b'cat')
dll.func('cat'.encode())
答案 1 :(得分:0)
ct.c_char_p(a.encode('UTF-8'))