转换' \ x00' Python 3中的ASCII

时间:2015-12-04 23:47:25

标签: python string python-3.x hex ctypes

我目前有以下操作:

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)

2 个答案:

答案 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'))