python ctypes structure wrong byte size

后端 未结 1 371
盖世英雄少女心
盖世英雄少女心 2021-01-12 08:26

So I\'m trying to figure out why the size of my ctypes.Structure is not what it should be. My code is the following, theres also the calculation of what the siz

相关标签:
1条回答
  • 2021-01-12 09:17

    Ok so I've found the solution. Thanks to Andreas who told me that my problem has to do with the offset. So the solution is to add a _pack_ = 1 to the structure like that.

    class FILE_HEAD(ctypes.Structure):
        _pack_ = 1
        _fields_ = [
            ("name", ctypes.c_char * 4),                    # 4 bytes
            ("size", ctypes.c_int),                         # 4 bytes
            ("Cal_l", ctypes.c_double),                     # 8 bytes
            ("Cal_r", ctypes.c_double),                     # 8 bytes
            ("Speed_ChL", ctypes.c_byte),                   # 1 byte
            ("Speed_Pulses_ChL", ctypes.c_int),             # 4 bytes
            ("Speed_factor_ChL", ctypes.c_double),          # 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", ctypes.c_byte),                   # 1 byte
            ("Speed_Pulses_ChR", ctypes.c_int),             # 4 bytes
            ("Speed_factor_ChR", ctypes.c_double),          # 8 bytes
            ("Quantity_ChR", ctypes.c_char * 3),            # 3 bytes
            ("Description_ChR", ctypes.c_char * 32),        # 32 bytes
            ("Unit_ChR", ctypes.c_char * 8)                 # 8 bytes
        ]                                                   # = 136 bytes
    
    0 讨论(0)
提交回复
热议问题