Python-Struct
从一个例子开始:
>>> from struct import *
>>> pack('hhl',1655, 255, 370)
b'w\x06\xff\x00r\x01\x00\x00'
>>> unpack('hhl', b'w\x06\xff\x00r\x01\x00\x00')
(1655, 255, 370)
>>> calcsize('hhl')
8

struct.pack(format, v1, v2, ...)
返回:一个字节对象
打包v1,v2...16进制值,默认低位在前高位在后
>>> from struct import *
>>> pack('hhl',1655, 255, 370)
b'w\x06\xff\x00r\x01\x00\x00'
b'w\x06\xff\x00r\x01\x00\x00'.hex()
'7706ff0072010000'
16进制,2字符占1字节
如图:

struct.unpack(format, buffer)
返回:一个元组
解压一个字节对象为元组
>>> unpack('hhl', b'w\x06\xff\x00r\x01\x00\x00')
(1655, 255, 370)
struct.calcsize(format)
返回:返回定义格式的字节大小
>>> calcsize('hhl')
8
hhl:2+2+4 =8
完整示例
import struct
#默认低位在前,高位在后,“<”模式
b = struct.pack('ihb', 255, 22, 37)
s = struct.unpack('ihb',b)
print(b)
print(s)
print("*******************")
data = [255, 22, 37]
#网络结构 :“!”和“>”相同,高位在前
buffer = struct.pack('!ihb', *data)
buffer_u =struct.unpack('!ihb', buffer)
print(buffer)
print(buffer_u)
print("*******************")
# 压缩解压不同模式,则解压错误
buffer_s =struct.unpack('ihb', buffer)
print(buffer_s)
b'\xff\x00\x16\x00%\x00\x00\x00'
(255, 22, 37)
*******************
b'\x00\xff\x00\x16\x00\x00\x00%'
(255, 22, 37)
*******************
(-256, 5632, 620756992)
Python-Struct的更多相关文章
- python struct中的pack unpack
python struct中的pack unpack pytyon tuple元组 print struct.unpack("!ihb", buffer) 结果为7 //pyth ...
- (转)python struct简介
最近在学习python网络编程这一块,在写简单的socket通信代码时,遇到了struct这个模块的使用,当时不太清楚这到底有和作用,后来查阅了相关资料大概了解了,在这里做一下简单的总结. 了解c语言 ...
- Python struct模块
有的时候需要用python处理二进制数据,比如,存取文件,socket操作时.这时候,可以使用python的struct模块来完成.可以用 struct来处理c语言中的结构体. struct模块中最重 ...
- python struct.pack() 二进制文件,文件中打包二进制数据的存储与解析
学习Python的过程中,遇到一个问题,在<Python学习手册>(也就是<learning python>)中,元组.文件及其他章节里,关于处理二进制文件里,有这么一段代码的 ...
- python struct模块的使用
struct模块中的函数 函数 return explain pack(fmt,v1,v2…) string 按照给定的格式(fmt),把数据转换成字符串(字节流),并将该字符串返回. pack_in ...
- python struct详解
转载:https://www.cnblogs.com/gala/archive/2011/09/22/2184801.html 有的时候需要用python处理二进制数据,比如,存取文件,socket操 ...
- Python struct 详解
最近在学习python网络编程这一块,在写简单的socket通信代码时,遇到了struct这个模块的使用,当时不太清楚这到底有和作用,后来查阅了相关资料大概了解了,在这里做一下简单的总结. 了解c语言 ...
- Python struct与小端存储
参考链接:https://www.liaoxuefeng.com/wiki/1016959663602400/1017685387246080 在使用Python 实现字符向字节数据类型转换的时候,P ...
- python struct.pack中的对齐字节问题
最近测试涉及到了序列字节化相关问题,碰到一个头疼的问题 buff = struct.pack("3s","B00") print repr(buff) 输 ...
- python struct.pack方法报错argument for 's' must be a bytes object 解决
参考 https://blog.csdn.net/weixin_38383877/article/details/81100192 在python3下使用struct模块代码 fileHead = s ...
随机推荐
- json和java对象相互转换
json和java对象相互转换 springboot中json转换默认使用的是jackson包,通过spring-boot-starter-web依赖的 1 在属性上添加注解@JsonFormat(p ...
- ArrayBlockingQueue源码分析
ArrayBlockingQueue是一个基于数组实现的有界的阻塞队列. 属性 //底层存储元素的数组.为final说明一旦初始化,容量不可变,所以是有界的. final Object[] items ...
- JS Arry 常用方法总结
var arr = ["a", "b", "c", "1", "2", "3"] ...
- Spring Cloud Netflix vs Spring Cloud Alibaba
Spring Cloud Netflixhttps://spring.io/projects/spring-cloud-netflix spring-cloud-alibaba/README-zh.m ...
- Hbuilder工具使用
现在用的版本是:HBuilder 9.1.19.201808300739 前段时间自动更新了下,也忘记了是更新后js代码不能正常代码提示,还是又发生了什么事情,导致了不能正常提示,也没时间去排查,卸载 ...
- $_SERVER['HTTP_REFERER']的使用
转载:http://www.5idev.com/p-php_server_http_referer.shtml 使用 $_SERVER['HTTP_REFERER'] 将很容易得到链接到当前页面的前一 ...
- MongoDB系列:三、springboot整合mongoDB的简单demo
在上篇 MongoDB常用操作练习 中,我们在命令提示符窗口使用简单的mongdb的方法操作数据库,实现增删改查及其他的功能.在本篇中,我们将mongodb与spring boot进行整合,也就是在j ...
- router-link RangeError: Maximum call stack size exceeded
报错的原因是路由不能写外部链接 写成<a href=""></a>
- react-navigation使用之嵌套和跳转
1. 新版react-native已经将react-navigation作为官方版本发布,基础Demo可以从官方网站获得,比较困扰的问题是组件的嵌套和第二.第三页面的跳转. 2. 组件嵌套问题: 要在 ...
- Hadoop系列(二):Hadoop单节点部署
环境:CentOS 7 JDK: 1.7.0_80 hadoop:2.8.5 hadoop(192.168.56.101) 配置基础环境 1. 测试环境可以直接关闭selinux和防火墙 2. 主机添 ...