如何确定使用create_string_buffer创建的缓冲区的使用大小/长度?
buffer = create_string_buffer(1000)
e.g。在缓冲区中我有3个值,997个未使用 - >如何获得3?
答案 0 :(得分:3)
你有什么理由不能做len(buffer.value)
吗?
对于它的纯理论乐趣 - 如果你可以使用上述方法,我认为没有理由这样做 - 我会提到你也可以buffer.raw.find("\x00")
或list(buffer).index("\x00")
。如果字符串未正确地以空值终止,则会失败。
答案 1 :(得分:0)
In [1]: from ctypes import *
In [2]: s = create_string_buffer(1000)
In [3]: s[0] = '1'
In [4]: s[1] = '2'
In [5]: s[2] = '3'
In [6]: s
Out[6]: <ctypes.c_char_Array_1000 at 0x8ca126c>
In [7]: for i, c in enumerate(s):
...: if c == '\x00':
...: break
...:
In [8]: i
Out[8]: 3
C-Strings以空值终止,因此循环遍历字符串,直到找到'\ x00'。
答案 2 :(得分:0)
你可以: