Pythonに書き込んだCコードをマッサージするために、ctypesを少しいじっています。Cコードは構造体と共用体に大きく依存しており、今のところ、Pythonでの簡単な解決策は、ctypesを介してそれらをサブクラス化することです。
つまり、これから:
struct foo {
uint32_t a;
uint32_t b;
uint16_t c;
uint16_t d;
};
これに:
from ctypes import *
class Foo(Structure):
_fields_ = [("a", c_uint),
("b", c_uint),
("c", c_ushort),
("d", c_ushort)]
ただし、__repr__()
定義をPythonクラスrepr()
に入れてからインスタンスで使用すると、返されるのは<class 'Foo'>
(または、そのための何か、ここでメモリから少し思い出す)だけです。
repr()
したがって、PythonとCの間で両方の世界を活用して最大限に活用する方法があるのか、それともメタクラスを調べて、struct
バイトを適切なPythonクラスにパック/アンパックするためにライブラリを使用する必要があるのか疑問に思います。
考え?