首页 > 其他分享 >struct --- 将字节串解读为打包的二进制数据

struct --- 将字节串解读为打包的二进制数据

时间:2023-01-11 07:00:11浏览次数:36  
标签:字符 struct unsigned long --- 整数 格式 字节

面对网络协议,在组包拆包时,python提供了struct模块,可以在python值和C语言的结构体之间相互转换。

格式字符串

格式字符串的第一个字符可用于指示打包数据的字节顺序,大小和对齐方式:

字符 字节顺序 大小 对齐方式
@ 按原字节 按原字节 按原字节
= 按原字节 标准
< 小端 标准
> 大端 标准
! 网络(=大端) 标准

格式字符

格式字符具有以下含义;C 和 Python 值之间的按其指定类型的转换应当是相当明显的。 ‘标准大小’列是指当使用标准大小时以字节表示的已打包值大小;也就是当格式字符串以 '<', '>', '!''=' 之一开头的情况。 当使用本机大小时,已打包值的大小取决于具体的平台。

格式 C 类型 Python 类型 标准大小 备注
x 填充字节 (7)
c char 长度为 1 的字节串 1
b signed char 整数 1 (1), (2)
B unsigned char 整数 1 (2)
? _Bool bool 1 (1)
h short 整数 2 (2)
H unsigned short 整数 2 (2)
i int 整数 4 (2)
I unsigned int 整数 4 (2)
l long 整数 4 (2)
L unsigned long 整数 4 (2)
q long long 整数 8 (2)
Q unsigned long long 整数 8 (2)
n ssize_t 整数 (3)
N size_t 整数 (3)
e (6) float 2 (4)
f float float 4 (4)
d double float 8 (4)
s char[] 字节串 (9)
p char[] 字节串 (8)
P void* 整数 (5)

格式字符之前可以带有整数重复计数。 例如,格式字符串 '4h' 的含义与 'hhhh' 完全相同。
格式之间的空白字符会被忽略;但是计数及其格式字符中不可有空白字符。

当使用某一种整数格式 ('b', 'B', 'h', 'H', 'i', 'I', 'l', 'L', 'q', 'Q') 打包值 x 时,如果 x 在该格式的有效范围之外则将引发 struct.error。

标签:字符,struct,unsigned,long,---,整数,格式,字节
From: https://www.cnblogs.com/conpi/p/17042726.html

相关文章

  • 数据结构 玩转数据结构 8-6 基于堆的优先队列
    0课程地址https://coding.imooc.com/lesson/207.html#mid=13743 1重点关注1.1基于堆的优先队列见3.1 1.2泛型使用见3.1方法中......
  • asm:8086寄存器概述(intel - reg16bits)
    asm:8086寄存器概述(intel-reg16bits)   一、 4个16位段地址寄存器  1、8086对存储器采用分段管理,4个段寄存器分别用于存放4个当前段的起始地址,又称为段基址寄存......
  • 报错 error : definition of implicitly-declared ‘virtual EpollDispatcher::~Epoll
    我写了一个EpollDispatcher,然后报错提示这个翻译一下,定义了隐式声明得虚析构函数virtualEpollDispatcher::~EpollDispatcher()    那为什么报这个错呢?逻辑是......
  • day1---二分查找打卡---力扣704--力扣27
     打卡第一天,希望自己可以坚持两个月,把算法能力提升去,然后方便找工作。然后很久没有刷算法题目了,这次的态度要很端正,因为之前刷题目的过程都不是一个非常完整的过程,所以......
  • asm:操作数寻址的七种方式(intel8086 - masm.exe)
    asm:操作数寻址的七种方式(intel8086-masm.exe)    在汇编汇编语言中,很多命令需要“操作数(参数)”。“操作数”给出的方式,有三类。第一类,“直接”给出操作数;第......
  • 43、商品服务---品牌管理---级联更新
    eg:小米品牌,旗下有很多产品,比如小米手机,小米平板等等,他们的品牌名都叫小米,电商项目数据库中避免表的关联,所以我们创建了一个关联表。比如品牌表和目录表的关联就是pms_categ......
  • 第五章(数据)[下]-结构体
    结构体(struct)将多个不同类型命名字段序列打包成一个复合类型字段名唯一,可用"_"补位,字段名排列顺序属于类型组成部分typenodestruct{ _int namestring......
  • Dubbo-kubernetes 基于 Informer 服务发现优化之路
    作者:丛国庆在Kubernetes(简称K8s,一个可移植容器的编排管理工具)体系中,etcd存储集群的数据信息,kube-apiserver作为统一入口,任何对数据的操作都必须经过kube-apiserver。......
  • L2-用日语自我介绍
    概述日语中可通过~です句型介绍自己的姓名和职业。动画会话A:たたいま我回来了B:春さん新しい住人が着きましたよ、春奶奶,新的住客到了新し(あたらし)形1......
  • CF1761F Anti-median (Easy Version)
    称一个排列是好的,当且仅当对于所有\(m\)都满足所有长度为\(2m+1\)的子串的中位数不在第\(m+1\)个。给定一个一些数被替换成\(-1\)的排列\(p\),你需要统计所有可能......