您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python ctypes结构错误的字节大小

5b51 2022/1/14 8:23:02 python 字数 3093 阅读 596 来源 www.jb51.cc/python

所以我想弄清楚为什么我的ctypes.Structure的大小不应该是它应该是什么.我的代码如下,还有计算大小应该是什么. class FILE_HEAD(ctypes.Structure): _fields_ = [ ("name", ctypes.c_char * 4), # 4 bytes ("size", cty

概述

class FILE_HEAD(ctypes.Structure):
    _fields_ = [
        ("name",ctypes.c_char * 4),# 4 bytes
        ("size",ctypes.c_int),# 4 bytes
        ("Cal_l",ctypes.c_double),# 8 bytes
        ("Cal_r",# 8 bytes
        ("Speed_ChL",ctypes.c_byte),# 1 byte
        ("Speed_Pulses_ChL",# 4 bytes
        ("Speed_factor_ChL",# 8 bytes
        ("Quantity_ChL",ctypes.c_char * 3),# 3 bytes
        ("Description_ChL",ctypes.c_char * 32),# 32 bytes
        ("Unit_ChL",ctypes.c_char * 8),# 8 bytes
        ("Speed_ChR",# 1 byte
        ("Speed_Pulses_ChR",# 4 bytes
        ("Speed_factor_ChR",# 8 bytes
        ("Quantity_ChR",# 3 bytes
        ("Description_ChR",# 32 bytes
        ("Unit_ChR",ctypes.c_char * 8)                 # 8 bytes
    ]                                                   # = 136 bytes

所以我认为Structure应该有136个字节的大小.但是,当我让python打印结构的实例大小打印ctypes.sizeof(COMI_HEAD)时,我得到144.我不知道那8个字节来自哪里.

我用以下数据填充了它并将其写入文件以查看所有字节并分析字节的位置.

comi = FILE_HEAD()
comi.name = "COMI"
comi.size = ctypes.sizeof(comi) - 8
comi.Cal_l = 342.324
comi.Cal_r = 342.324
comi.Speed_ChL = ctypes.c_byte(1)
comi.Speed_Pulses_ChL = 123
comi.Speed_factor_ChL = 123.456
comi.Quantity_ChL = "Tes"
comi.Description_ChL = "Test Desc"
comi.Unit_ChL = "t/t"
comi.Speed_ChR = ctypes.c_byte(1)
comi.Speed_Pulses_ChR = 123
comi.Speed_factor_ChR = 123.456
comi.Quantity_ChR = "Tes"
comi.Description_ChR = "Test Desc"
comi.Unit_ChR = "t/t"

这是我的HEX-Viewer向我展示的内容.我标记为红色,我认为哪些字节是8个字节太多,但我不知道这8个字节来自哪里.我标记的前3个字节直接来自Speed_ChL,它应该是1个字节,但看起来像4个字节.我标记的接下来的5个字节位于文件的末尾.这个字符串Unit_ChR应该是8个字节,但看起来像是13个字节.

谁能告诉我我的错误在哪里?我在这做错了什么?任何帮助表示赞赏!

class FILE_HEAD(ctypes.Structure):
    _pack_ = 1
    _fields_ = [
        ("name",ctypes.c_char * 8)                 # 8 bytes
    ]                                                   # = 136 bytes

总结

以上是编程之家为你收集整理的python ctypes结构错误的字节大小全部内容,希望文章能够帮你解决python ctypes结构错误的字节大小所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶