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のバッファ中の文字列がヌルターミネートされている
場合でないとだめです。