我有一个使用 ctypes 的简单代码:
Python 3.1.1 (r311:74480, Feb 23 2010, 11:06:41)
[GCC 4.1.2 20071124 (Red Hat 4.1.2-42)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import ctypes
>>> libc = ctypes.CDLL("libc.so.6")
>>> libc.strlen("HELLO")
1
>>> print(libc.strlen("HELLO"))
1
我做错了什么?
提前致谢。
最佳答案
Python 3 对字符串使用 Unicode。当传递给 C 函数时,每个字符将超过一个字节,对于 ASCII 字符,其中一个字节将为零。 strlen
将在它找到的第一个零处停止。
我能够在 Python 2.7 中复制这些结果,并进行修复:
>>> libc.strlen("HELLO")
5
>>> libc.strlen(u"HELLO")
1
>>> libc.strlen(u"HELLO".encode('ascii'))
5
关于python - 使用 ctypes libc.strlen 时总是返回 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11022571/