0

PyInt を C int に変換する必要があります。私のコードでは

count=PyInt_FromSsize_t(PyList_Size(pValue))

pValue は PyObject、PyList です。私が抱えていた問題は、PyList_Size が正しいリスト サイズを返さないことです (カウントは 5 であるはずですが、600 万になりました)。または、C コードで Python スクリプトにインターフェイスしているため、データ型に問題があります。理想的には、count を C の int 型にしたいと考えています。

長いCデータ型を返すpython/c APIを見つけました...これは私が望んでいるものではありません...誰かが正しいメソッドまたはAPIを教えてくれますか??

4

1 に答える 1

3

PyInt_FromSsize_t()は、メモリ内にある本格的な Pythonオブジェクトを返し、そのintメモリ アドレスを返します。これが、600 万という数字の由来です。によって返されたスカラーを取得して、それを C 整数にキャストしたいだけPyList_Size()だと思います。

count = (int) PyList_Size(pValue)

リストが非常に長くなる可能性がある場合は、代わりに を作成countすることを検討することをお勧めしlongます。その場合、代わりにその特定の型にキャストできます。

注:の数は-1、Python がリストの長さを測定しようとしたときに例外が発生したことを意味します。例外を処理する方法を知るために読む必要があるドキュメントは次のとおりです。

http://docs.python.org/c-api/intro.html#exceptions

于 2011-11-24T20:32:32.477 に答える