最新要闻
- 全球资讯:华为小米vivo一加重磅新机汇总!接下来10天有的看了
- 世界球精选!终于不缺货了!小米13 Ultra订单增加50%:不愁买不到
- 视讯!这才是青春_山东聊城市中考满分作文 中考满分作文:静待一场幸
- 环球热议:“三轮跑车”尬舞!又被比亚迪装到了 国产车控黑科技登场
- 每日快播:安“踏”李宁
- 天天速讯:月薪2万女高管不服从工作安排被炒获赔98万:网友力挺
- 出水芙蓉?真人版《小美人鱼》电影照更新:黑小美人鱼特写来了
- 五金店卖什么卖得最好_五金店卖什么
- 天天新消息丨腾讯国漫手游《狐妖小红娘》宣布停运 6月16日关闭服务器
- 电动版帕萨特这模样?大众ID.7申报图亮相
- 视焦点讯!3599元起 铭凡推出NPB7迷你主机:i7-13700H、双雷电4
- 天天速读:丰田醒了 可睁开眼发现:世界已经变了!
- 南方的网友注意了 沙尘已跨过长江!北京影响已到末期
- 天天时讯:紫薯泥怎么做好吃-紫薯泥
- 【天天新视野】本周发布!徕卡M11 Monochrom详细规格曝光
- 旗舰功能全下放!华为nova 11 Ultra曝光:卫星通信、可变光圈都支持
广告
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
Python中struct 模块的使用教程
(资料图片)
1.struct 简单介绍
struct 是 Python 的内置模块, 在使用 socket 通信的时候, 大多数据的传输都是以二进制流的形式的存在, 而 struct 模块就提供了一种机制, 该机制可以将某些特定的结构体类型打包成二进制流的字符串然后再网络传输,而接收端也应该可以通过某种机制进行解包还原出原始的结构体数据
2.struct 的使用
struct 模块可以将任意大小的数字转换成一个固定长度(可选择)的 bytes, 这个原理类似于前面章节讲过的 hash 算法, 不论内容多大, 最终的 hash 值长度不变, 不同的是 hash 算法是不可逆的, 而且传入的原材料可以是文本、字符串等许多数据类型, struct 可以反解出原来的数据
ps : struct 模块只能转换数字, 不能转换其他的数据类型
3.基本使用 pack 和 unpack
正确使用示例 (打包字节长度对应表请往下看)
import structres = struct.pack("i",1234566) # 传入的必须是 int 类型print(res) # b"\x86\xd6\x12\x00" (查看内容)print(type(res)) # (查看类型)res2 = struct.unpack("i",res) # 使用什么 Format 打包就用什么解包print(res2) # (1234566,) (是个元组)print(type(res2)) # (查看类型)print(res2[0]) # 1234566
传入非 int 类型引发的错误示例
import structres = struct.pack("i","1231")# 抛出异常 : struct.error: required argument is not an integer (参数必须是整数)
解包时使用的 Format 不一致错误示例
import structres = struct.pack("i",123)res2 = struct.unpack("q",res)# struct.error: unpack requires a buffer of 8 bytes
传入多个值
res = struct.pack("hiq",12,23,451312) # 传入多个值, 并使用不同的 Fromatprint(res) # b"\x0c\x00\x00\x00\x17\x00\x00\x00\xf0\xe2\x06\x00\x00\x00\x00\x00"print(type(res)) # a,b,c = struct.unpack("hiq",res) # 使用解压赋值,有几个值就需要有几个 Fromatprint(a,b,c) # 12 23 451312
Fromat 与值不一致错误示例
with open("aaa.txt","wb")as f: for i in range(5): res = struct.pack("i",i) f.write(res) with open("aaa.txt","rb")as f: res = f.read() print(res) a,b,c,d,e= struct.unpack("i",res) # 打包的时候是 5 个值, 解包的时候也要传 5 个值 print(a,b,c,d,e) # 抛出异常 : struct.error: unpack requires a buffer of 4 bytes
打包一个 json 后的信息长度, 在 socket 中可用于发送报头(报头为固定长度)
import structimport jsondic = { "header_name" : "a.txt", "total_size" : 22, "heash" : "shawn"} #Python小白学习交流群:725638078res = json.dumps(dic) # 将报头序列化lens = struct.pack("i",len(res)) # 将报头的长度传入并打包lens2 = struct.unpack("i",lens) # 假设通信另一端收到打包的二进制,再进行解包拿到长度print(lens2) # (60,)print(lens[0]) # 60
4.打包字节长度对照表
字符(Format) | cType | Python type | Standard size |
---|---|---|---|
x | pad byte | no value | |
c | char | string of length 1 | 1 |
b | signed char | integer | 1 |
B | unsigned char | integer | 1 |
? | _Bool | bool | 1 |
h | short | integer | 2 |
H | unsigned short | integer | 2 |
i | int | integer | 4 |
I(大写i) | unsigned int | integer | 4 |
l(小写L) | long | integer | 4 |
L | unsigned long | integer | 4 |
q | long long | integer | 8 |
Q | unsigned long long | integer | 8 |
f | float | float | 4 |
d | double | float | 8 |
s | charl | string | |
p | charl | string | |
P | void* | integer |
关键词:
Python中struct 模块的使用教程
焦点观察:once do, do it well
全球资讯:华为小米vivo一加重磅新机汇总!接下来10天有的看了
世界球精选!终于不缺货了!小米13 Ultra订单增加50%:不愁买不到
视讯!这才是青春_山东聊城市中考满分作文 中考满分作文:静待一场幸
SpringApplication详解
焦点讯息:OpenAI Translator | 基于ChatGPT API全局翻译润色解析及ORC上传图像翻译工具
当前报道:锁屏面试题百日百刷-kafk篇(一)
环球热议:“三轮跑车”尬舞!又被比亚迪装到了 国产车控黑科技登场
每日快播:安“踏”李宁
天天速讯:月薪2万女高管不服从工作安排被炒获赔98万:网友力挺
出水芙蓉?真人版《小美人鱼》电影照更新:黑小美人鱼特写来了
Turtlebot3仿真代码学习笔记
世界热点!.NET 个人博客系统
五金店卖什么卖得最好_五金店卖什么
天天新消息丨腾讯国漫手游《狐妖小红娘》宣布停运 6月16日关闭服务器
电动版帕萨特这模样?大众ID.7申报图亮相
视焦点讯!3599元起 铭凡推出NPB7迷你主机:i7-13700H、双雷电4
天天速读:丰田醒了 可睁开眼发现:世界已经变了!
南方的网友注意了 沙尘已跨过长江!北京影响已到末期
day07-OpenFeign-服务调用
看热讯:stm32 使用多串口通信调试总结
速讯:记录-css实现交融文字效果
环球最新:阿里云 - 连接不同VPC方案
天天时讯:紫薯泥怎么做好吃-紫薯泥
【天天新视野】本周发布!徕卡M11 Monochrom详细规格曝光
旗舰功能全下放!华为nova 11 Ultra曝光:卫星通信、可变光圈都支持
焦点速看:米粉催雷军发小米13 Ultra:你敢发我就敢买
电脑里破解软件又少一款!Win11原生录屏免费平替了:新增快捷键
绝对忠诚?超八成iPhone用户丢机后秒换新款iPhone
全球快讯:从spring boot泄露到接管云服务器平台
ThreadPoolExecutor源码学习
图文介绍 Windows 系统下打包上传 IOS APP 流程
【Visual Leak Detector】使用注意事项
一个TCP 连接可以发送多少个HTTP请求?
为什么打不开空间_腾讯官方的解决方法
《终结者》T-1000成真!科学家研制出可固液转变机器人 形态科幻
当前观点:或命名为“高山” 魏牌全新插混MPV申报:红旗HQ9有话要说
印度版大G来啦!4排10座轴距超3米 马力只有90匹
坚持元宇宙不动摇:Meta百万美元年薪招聘VR程序员
环球观热点:女子下班回工作消息获赔加班费引热议!调查称仅1成多人拒绝下班秒回工作
全球即时:卢拉发推预告:“我将启程前往中国”,期望加强巴中贸易伙伴关系
世界简讯:【一行代码秒上云】Serverless六步构建全栈网站
科创人·中建三局一公司尹奎:数字化变革能创造全新行业,其意义超越形式、范式创新
当前关注:CAD二次开发,安装程序中写注册表
滚动:低代码开发,是稳扎稳打还是饮鸩止渴?
快报:【金融街发布】人民银行:3月货币供应量M2同比增长12.7% 比上月回落0.2个百分点
能打比亚迪宋PLUS DM-i 哈弗枭龙MAX开订:用上Hi4电四驱
焦点关注:两大巨头“世纪大和解”!腾讯视频官方入驻抖音:昵称“鹅家”
天天日报丨13代标压高能轻薄本!华硕无畏15i 2023到手5699元:OLED好屏值得拥有
又来一份10年协议!微软与英国EE达成云游戏合作
焦点播报:《圣斗士星矢》真人版战斗预告:变身画面超燃!
温彬等:食品、能源价格双双下探,促内需政策仍须发力
精彩看点:【业务自动化平台】上海道宁与UiPath致力于让每个企业、每个人都能充分利用自动化带来的成就和优势
微服务保护--Sentinel
ASP.NET Post, FromBody 接参总是null 空值. Web api 前端传递是有值的,怎么回事?
【新华500】新华500指数(989001)11日微跌0.07%
快消息!7000mAh超大电池比肩充电宝!华为畅享60X官宣:实用体验才是王道
世界快资讯:女子看电视惊现3000多秒超长广告 直呼太离谱
环球今亮点!国内最新快递服务满意度出炉:顺丰、京东、邮政排前三 你经常用哪家?
简讯:大家不看电视了?海信:电视开机率低是个伪命题
环球快讯:别YY失控!深圳一辆特斯拉钣喷中心破窗而出 差点掉下来:官方回应
热议:希腊神话的英语典故
重试,让程序更健壮
aix系统如何查看网卡配置
模型训练与推理中为什么需要使用GPU?基本概念梳理
全球球精选!2023年最新iOS打包发布流程汇总
韩总统府称网传美监听韩政府文件部分系伪造
多地现沙尘暴!中央气象台首席预报员:沙尘天气无需根治
英特尔锐炫A750最新驱动游戏实测:进步巨大
刷新认知!男子站临海近乎垂直石壁上钓鱼:网友直呼请勿模仿
环球新动态:世界首个“九尾狐甲鱼”化石被发现:长相奇特怪异
全球第一批25个GPT模型开始自由生活
当前资讯!应用火山引擎 DataTester“避坑”,抖音实现用 A/B 实验快速试错
路由跳转及传参
每日消息!堆叠面积图的优点和缺点有哪些?
跟ChatGPT聊天、需求润色优化,禅道OpenAI 插件发布!
三星9082怎么恢复出厂设置?三星9082手机参数
索尼w570现在值多少钱?索尼w570参数
台式机怎么设置无线上网?台式机怎么调节屏幕亮度?
巧克力键盘是什么意思?巧克力键盘和机械键盘的区别是什么?
诺基亚n82上市价格是多少?诺基亚n82手机参数
每日时讯!鑫顺看市:4.11黄金守住1980关键位,多头或再次卷土重来
当前资讯![网络]应用层协议:HTTP / HTTPS
用ChatGPT问.NET的相关问题,.NET工程师的前景不错
每日热讯!男子被鱼刺卡喉硬吞饭团:结果扎穿食管
天天速看:力压宝马X5 理想L7交付首月狂卖8009台:稳居国内中大型SUV销量第一
世界热门:米其林中国回应顾客用餐后上吐下泻:非常重视消费者健康安全
焦点!紫光展锐首款车规级5G座舱芯片平台A7870公布:6nm加持、NPU算力媲美骁龙8155
全球热推荐:蓝牌要成历史?新款奔腾T90官图:全新车牌引遐想
世界新消息丨又萌又飒!池州一高校女生穿公主裙一“跑”走红
在寻找 LastPass 的更好替代品吗?
当前简讯:金融系统NTP时钟同步(网络校时服务器)架设工作详情
[网络]TCP的三次握手与四次挥手[转载]
每日焦点!Python程序笔记20230301
云图说|图解云消息服务KooMessage
环球微资讯!充电仅需18秒!中科大研发出新型水系锌离子电池
或为问界M9 赛力斯大型SUV专利图曝光:有点“震撼”
天天头条:车评人表扬华为问界:看不见的底盘件 大面积用铝合金材料
环球信息:林州“网红试胆石”出现裂缝仍有游客打卡 官方回应