pythonstructpack一个数组_Pythonstruct.pack的问题

更新时间:2023-07-19 04:16:52 阅读: 评论:0

pythonstructpack⼀个数组_Pythonstruct.pack的问题
俏丽的反义词
因为涉及⼆进制串和字节处理,所以包含的知识是⽐较底层的。
⾸先要知道 struct 中的 pack 和 unpack 是⽤来完成数据结构和字节流之间转换的,也就是说,这两个函数是在转换数据的表⽰形式,并不会改变数据。
⽐如 int a = 4; 这⾥的 a 转换通过'i' format 成字节流为: \x04\x00\x00\x00 (⼤端序为 \x00\x00\x00\x04)。
以上或者反过来。
那么简洁地说:
为什么要转换?
为了迎合处理字节流,⽐如 构造⽹络包来发送,或者解析接收的⽹络包。
怎么转?
这就是函数(主要就是 pack 和 unpack)的使⽤⽅法。 pack(format, value1, ) unpack(format, stri
ng)
其中:
pack函数将普通的数据结构转成字节流,你⾃然要提供⼀个 format, 这个 format 描述了你要操作的后⾯许多value的数据类型,从⽽按照这个描述⽣成的有意义的字节流。 ⽽ 接收到的字节流 或者 之前⽣成的字节流,可以通过unpack函数来解析,⼀⼤段字节来了,你要解析,⾃然需要描述⼀下这个字节流我该在哪⾥切分⼀下,应该⽤什么顺序等,这就是format在做的事情。
荣禄简介format 该怎么写?
请⾃⾏查询这⾥ format 的语法。
哲理句子特别的,由于系统本⾝处理字符串的差异,在描述数据类型的format参数的开头,也可能有(可缺省)描述format⽅式的符号(⽐如字节顺序),具体同format 语法,请⾃⾏查询。
所以,我们来看你的这段代码:
1.代码中的tag,即为 format 变量。
tag = '>h' dian == HIGHT_ENDIAN el 'h'
这⾥通过判断 字节顺序,来判断是否添加 ⼤端字节序描述符‘>’ 到format前,'h'在format语法中代表 2字节长度的 C语⾔ short类型(Python中的 integer )。
2. 保存value长度三字经教案
length = len(value)
lf.buffer += (struct.pack(tag, length))
感伤与伤感句子
求的value的长度,现在的tag值为“h”或者“>h”, 来表⽰长度length, 调⽤函数⽣成字节流添加到buffer的尾端。
祖窍
五四活动感觉你的存在3. 保存value的值
tag = '%ss' % (length)
lf.buffer += (struct.pack(tag, value))
先⽣成描述value的format,然后pack,添加到buffer尾端。

本文发布于:2023-07-19 04:16:52,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1087260.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:数据压缩原理
下一篇:协议解析
标签:字节   处理   描述   顺序   添加
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图