Python:struct处理二进制数据bytes。

# struct - 格式符
# -------------------------------------------------------------------------------
# FORMAT   C-TYPE               PYTHON-TYPE          STANDARD-SIZE    NOTES
# -------+--------------------+---------------------+---------------+------------
#  x       pad byte             no value
#  c       char                 string of length 1    1
#  b       signed char          integer               1                (3)
#  B       unsigned char        integer               1                (3)
#  ?       _Bool                bool                  1                (1)
#  h       short                integer               2                (3)
#  H       unsigned short       integer               2                (3)
#  i       int                  integer               4                (3)
#  I       unsigned int         integer               4                (3)
#  l       long                 integer               4                (3)
#  L       unsigned long        integer               4                (3)
#  q       long long            integer               8                (2), (3)
#  Q       unsigned long long   integer               8                (2), (3)
#  f       float                float                 4                (4)
#  d       double               float                 8                (4)
#  s       char[]               string
#  p       char[]               string
#  P       void *               integer                                (5), (3)
# -------------------------------------------------------------------------------
# 注1.q和Q只在机器支持64位操作时有意思
# 注2.每个格式前可以有一个数字,表示个数
# 注3.s格式表示一定长度的字符串,4s表示长度为4的字符串,但是p表示的是pascal字符串
# 注4.P用来转换一个指针,其长度和机器字长相关
# 注5.最后一个可以用来表示指针类型的,占4个字节
# -------------------------------------------------------------------------------

# struct - 对齐方式
# --------------------------------------------------------------
#   CHARACTER   BYTE-ORDER                 SIZE       ALIGNMENT
# ------------+--------------------------+----------+-----------
#   @           native                     native     native
#   =           native                     standard   none
#   <           little - endian            standard   none
#   >           big - endian               standard   none
#   !           network( = big - endian)   standard   none
# --------------------------------------------------------------

# struct - 例子
#
# struct Header
# {
#     unsigned short id;
#     char[4]        tag;
#     unsigned int   version;
#     unsigned int   count;
# }
#
# st  = struct.pack("!H4s2I", id , tag, version, count);          # 打包struct
# tup = struct.unpack("!H4s2I",  data)                            # 解析成tuple
# id, tag, version, count = struct.unpack("!H4s2I", data)         # 解析成员变量
# id  = int.from_bytes(data[0:1], byteorder='big', signed=False)  # bytes转int

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值