3

create_string_bufferで作成されたバッファの使用済みサイズ/長さを確認するにはどうすればよいですか?

buffer = create_string_buffer(1000)

たとえば、バッファには3つの値があり、997は未使用です-> 3つを取得するにはどうすればよいですか?

4

3 に答える 3

5

ただできない理由はありますlen(buffer.value)か?

それの純粋な理論的な楽しみのために-あなたが上記の方法を使うことができるなら私はこれをする理由がわかりません-私はあなたがまたはすることもできると言及しbuffer.raw.find("\x00")ますlist(buffer).index("\x00")。ただし、文字列が適切にnullで終了していない場合、これらは失敗します。

于 2012-06-20T10:13:49.080 に答える
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文字列はnullで終了するため、「\x00」が見つかるまで文字列をループします。

于 2012-06-20T09:54:08.577 に答える
0

あなたは出来る:

  1. バッファーにデータを取り込む関数に、使用されたバッファーの量を返すようにします。
  2. nulなどのバッファの終了条件を探します。
  3. データで使用されたことのない値でバッファを初期化し、データを終了する値を探します。
于 2012-06-21T04:40:05.270 に答える