1
timonwong 2014-12-25 15:04:32 +08:00
因为 ctypes.Structure 类型是可以转换为 "buffer" 类型的
然后 file 类型支持写入 "buffer" 类型,因此可行。 fileobject.write(str or buffer) bytes(buffer(t)) |
2
ryanking8215 OP @timonwong 忘了说了,我用的是python3.4,没有buffer类型。发现用bytes(t)可以直接得到二进制数据。bytes->t有什么办法吗?我现在用struct模块转,但我觉得应该有更简单的办法。
|
3
ryanking8215 OP 可以这样:
b=b'1111' PT = ctypes.POINTER(T) pt = ctypes.cast(b,PT) print(pt.contents) 通过ctypes.cast,将bytes对象指向的内存变为T *类型的,然后按照T类型取出内存中的数据。 |
4
fghzpqm 2014-12-26 15:10:07 +08:00 1
@ryanking8215 感觉你在找 Construct 这样的东西。http://construct.readthedocs.org/en/latest/
|
5
ryanking8215 OP @fghzpqm 是这么个东东,不过我用自己的方法也可以转了
|