从一个例子开始:

>>> 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的更多相关文章

  1. python struct中的pack unpack

    python struct中的pack unpack pytyon tuple元组 print struct.unpack("!ihb", buffer)  结果为7 //pyth ...

  2. (转)python struct简介

    最近在学习python网络编程这一块,在写简单的socket通信代码时,遇到了struct这个模块的使用,当时不太清楚这到底有和作用,后来查阅了相关资料大概了解了,在这里做一下简单的总结. 了解c语言 ...

  3. Python struct模块

    有的时候需要用python处理二进制数据,比如,存取文件,socket操作时.这时候,可以使用python的struct模块来完成.可以用 struct来处理c语言中的结构体. struct模块中最重 ...

  4. python struct.pack() 二进制文件,文件中打包二进制数据的存储与解析

    学习Python的过程中,遇到一个问题,在<Python学习手册>(也就是<learning python>)中,元组.文件及其他章节里,关于处理二进制文件里,有这么一段代码的 ...

  5. python struct模块的使用

    struct模块中的函数 函数 return explain pack(fmt,v1,v2…) string 按照给定的格式(fmt),把数据转换成字符串(字节流),并将该字符串返回. pack_in ...

  6. python struct详解

    转载:https://www.cnblogs.com/gala/archive/2011/09/22/2184801.html 有的时候需要用python处理二进制数据,比如,存取文件,socket操 ...

  7. Python struct 详解

    最近在学习python网络编程这一块,在写简单的socket通信代码时,遇到了struct这个模块的使用,当时不太清楚这到底有和作用,后来查阅了相关资料大概了解了,在这里做一下简单的总结. 了解c语言 ...

  8. Python struct与小端存储

    参考链接:https://www.liaoxuefeng.com/wiki/1016959663602400/1017685387246080 在使用Python 实现字符向字节数据类型转换的时候,P ...

  9. python struct.pack中的对齐字节问题

    最近测试涉及到了序列字节化相关问题,碰到一个头疼的问题 buff = struct.pack("3s","B00")    print repr(buff) 输 ...

  10. python struct.pack方法报错argument for 's' must be a bytes object 解决

    参考 https://blog.csdn.net/weixin_38383877/article/details/81100192 在python3下使用struct模块代码 fileHead = s ...

随机推荐

  1. vue源码分析—Vue.js 源码目录设计

    Vue.js 的源码都在 src 目录下,其目录结构如下 src ├── compiler # 编译相关 ├── core # 核心代码 ├── platforms # 不同平台的支持 ├── ser ...

  2. ARTS打卡第四周

    Algorithm 只出现一次的数字   给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明: 你的算法应该具有线性时间复杂度. 你可以不使用 ...

  3. Linux:Day17(下) openssl

    Linux Services and Security OpenSSL OpenSSH dns:bind web:http,httpd(apache),php,mariadb(mysql) lamp ...

  4. Hive JDBC:java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: root is not allowed to impersonate anonymous

    今天使用JDBC来操作Hive时,首先启动了hive远程服务模式:hiveserver2 &(表示后台运行),然后到eclipse中运行程序时出现错误: java.sql.SQLExcepti ...

  5. Python支付宝在线支付API

    一.蚂蚁金服开发平台申请测试账号 a. 登陆蚂蚁金服开放平台https://open.alipay.com/platform/manageHome.htm,在“开发中心”—“研发服务”下拉处选择沙箱作 ...

  6. webpack优化相关操作

    1.缩小文件搜索的范围 • 优化loader配置 尽量精确使用 include 只命中需要的文件.    module.exports = {      module: {        rules: ...

  7. 安装Cnario Player 3.8.1.156或其他版本时提示"Warning 4154. Adobe Flash Player 13 ...not correctly installed"

    错误提示 安装Cnario Player 3.8.1.156或其他版本时, 有时会出现如下提示: Warning 4154. Adobe Flash Player 13 ...not correctl ...

  8. wince可用的7-zip

    7-zip下载   7-zip    

  9. ERP常见问题总结处理

    1. ERP系统的重量录入组件设计不合理易导致录入错误 如下图所示: 修正方法: 1. 更正数据 使用SQL语句更正数据,已经生产完成,作为单据重新录入比较麻烦 UPDATE e_wms_materi ...

  10. 【dp】合唱队形

    题目描述 NN位同学站成一排,音乐老师要请其中的(N-KN−K)位同学出列,使得剩下的KK位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2,…,K,他们的身高分别为 ...