python ctypes 长度计算问题

95 篇文章 1 订阅

python ctypes结构错误的字节大小

import ctypes
from ctypes import *


class iot_plc_upgrade_start_dl(ctypes.Structure):
	# _pack_ = 1	解决长度计算问题 
    _fields_ = [('basic_info',c_int),                   # 4     b'00000000'     4   4
                ('upgrade_id',c_int),                   # 4     b'00000000 01000000'    8   8
                ('time_window',c_ushort),               # 2     b'00000000 01000000 10270000'   10  12
                ('remote_block_cnt',c_ushort),          # 2     b'00000000 01000000 10270100'   12  12
                ('remote_block_size',c_ushort),         # 2     b'00000000 01000000 10270100 90010000'      14  16
                ('level_one_pco_count',c_ubyte),        # 1     b'00000000 01000000 10270100 90010500'      15
                ('fw_checksum',c_ulong),                # 4     b'00000000 01000000 10270100 90010500 54b3e994'     19
                ('pib_checksum',c_int),                 # 4     b'00000000 01000000 10270100 90010500 54b3e994 4b6c7160'    23
                ('fw_size',c_int),                      # 4     b'00000000 01000000 10270100 90010500 54b3e994 4b6c7160 20780400'   27
                ('pib_size',c_ushort),                  # 2     b'00000000 01000000 10270100 90010500 54b3e994 4b6c7160 20780400 00300000'  29
                ('fw_version',c_int),                   # 4     b'00000000 01000000 10270100 90010500 54b3e994 4b6c7160 20780400 00300000 11000160'     33
                ('pib_version',c_int),                  # 4     b'00000000 01000000 10270100 90010500 54b3e994 4b6c7160 20780400 00300000 11000160 11000160'    37
                ('block_size',c_ushort),                # 2     b'00000000 01000000 10270100 90010500 54b3e994 4b6c7160 20780400 00300000 11000160 11000160 c8000000'   39
                ('upgrade_type',c_ubyte),               # 1     b'00000000 01000000 10270100 90010500 54b3e994 4b6c7160 20780400 00300000 11000160 11000160 c8000100'   40
                ('broadcast_retry_times',c_ubyte),      # 1     b'00000000 01000000 10270100 90010500 54b3e994 4b6c7160 20780400 00300000 11000160 11000160 c8000101'   41
                ('phase_one_broadcast_times',c_ushort), # 2     b'00000000 01000000 10270100 90010500 54b3e994 4b6c7160 20780400 00300000 11000160 11000160 c8000101 00000000'  43
                ('dst_total_num',c_ushort),             # 2     b'00000000 01000000 10270100 90010500 54b3e994 4b6c7160 20780400 00300000 11000160 11000160 c8000101 00000000'  45
                ('dst_num',c_ubyte),                    # 1     b'00000000 01000000 10270100 90010500 54b3e994 4b6c7160 20780400 00300000 11000160 11000160 c8000101 00000000 00000000' 46
                ]

cmd = iot_plc_upgrade_start_dl()
cmd.basic_info=0
cmd.upgrade_id=1
cmd.time_window=10000
cmd.remote_block_cnt=1
cmd.remote_block_size=400
cmd.level_one_pco_count=5
cmd.fw_checksum=2498343764
cmd.pib_checksum=1618046027
cmd.fw_size=292896
cmd.pib_size=12288
cmd.fw_version=1610678289
cmd.pib_version=1610678289
cmd.block_size=200
cmd.upgrade_type=1
cmd.broadcast_retry_times=1
cmd.phase_one_broadcast_times=0
cmd.dst_total_num=0
cmd.dst_num=0
r = byref(cmd)
b = string_at(r, sizeof(cmd))
print(sizeof(cmd))
import binascii
print(binascii.hexlify(b))

在这里插入图片描述

设置数据对其的字节数,与c语言的数据对齐有关。
详细

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值