如何使用ctypes读取打包结构 [英] How to read packed structures using ctypes

查看:108
本文介绍了如何使用ctypes读取打包结构的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

python中是否有一种方法可以解压缩使用 #pragma pack(x) __ attribute __((packed))使用结构?

Is there a way in python to unpack C structures created using #pragma pack(x) or __attribute__((packed)) using structs?

或者,如何确定python结构处理填充的方式?

Alternatively, how to determine the manner in which python struct handles padding?

推荐答案

使用 struct 类。

在字节顺序(大字节序与小字节序)和对齐方式(打包)方面非常灵活。请参见 字节顺序,大小和对齐方式 。默认为本机字节顺序(相当有意义,但编译了python)。

It is flexible in terms of byte order (big vs. little endian) and alignment (packing). See Byte Order, Size, and Alignment. It defaults to native byte order (pretty much meaning however python was compiled).

本机示例

C:

struct foo {
    int  bar;
    char t;
    char x;
}

Python:

struct.pack('IBB', bar, t, x)

这篇关于如何使用ctypes读取打包结构的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆