ctypes覚書
(1) ctypesのバッファにpythonの文字列を設定する方法
from ctypes import * # ctypesのバッファを作る ctypes_buff = (c_byte * 100)() # pythonの文字列 pystr = 'abcdefg' # ctypesのバッファとpython文字列の長さのうち短いほうを調べ、 # コピーするサイズとする。 len = min(sizeof(ctypes_buff), len(pystr)) # ctypesのバッファにpython文字列をコピー memset(addressof(ctypes_buff), pystr, len)
(2) ctypesのバッファから文字列を取り出す方法
(1)の方法で既にctypesのバッファに文字列が設定されているとして
# 文字列を取得 pystr = string_at(addressof(ctypes_buff))
注意点
string_at()は、ctypesのバッファ中の文字列がヌルターミネートされている
場合でないとだめです。