从一个例子开始:

>>> 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. 关键字-this

    1.当成员变量和局部变量重名时,在方法中使用this时,this指向的是该方法所在类的成员变量. package gc.test.java.cs1; public class User{ public ...

  2. 老白关于rac性能调优的建议(10gRAC)

    RAC应用设计方面需要在底层做很有设计.虽然ORACLE的售前人员总是说RAC的扩展性是透明的,只要把应用分到不同的节点,就可以平滑的扩展系统能力了.而事实上,RAC的CACHE FUSION机制决定 ...

  3. 《css世界》笔记之流、元素与基本尺寸

    1. 块级元素 基本特性:就是一个水平流上只能单独显示一个元素,多个块级元素则换行显示. 块级元素和"display 为block 的元素"不是一个概念,display:list- ...

  4. python使用装饰器对文件进行读写操作'及遍历文件目录

    '''使用装饰器对文件进行读写操作''' # def check_permission(func): # '''演示嵌套函数定义及使用''' # def wrapper(*args,**kwargs) ...

  5. python新手菜鸟之基础篇

    s=0 for i in range(1,101): s += i else: print(s) def main(n): '''打印菱形图形''' for i in range(n): print( ...

  6. Centos7 IPv6 Route And Dhcpv6 Server(借鉴补充)

    软件:radvd.dhcp 1)启用ipv6 vi /etc/sysctl.conf net.ipv6.conf.all.disable_ipv6 = 0net.ipv6.conf.default.d ...

  7. [转帖]5G网速那么快,基站辐射会很大吗?

    5G网速那么快,基站辐射会很大吗? 鲜枣课堂 2019-04-20 21:19收藏55评论6社交通讯     题图来自东方IC,本文来自微信公众号:鲜枣课堂(ID:xzclasscom),作者:小枣君 ...

  8. Problem 2. number题解

    number:数学+二分图匹配 首先,如果S<N,那么S+1,S+2...N这些数直接放在S+1,S+2...N的位置上(如果其他数x放在这些位置上面,这些数不放在对应位置,那么x一定能放在这些 ...

  9. git忽略文件不起作用时

    开始我是直接进到仓库建立了.gitignore文件,再从仓库进入到项目add时总是会添加不需要添加的文件, 后来明白应该是在哪里提交在哪里创建.gitignore文件 git忽略文件操作步骤如下: 1 ...

  10. C# call webservice方法

    https://www.cnblogs.com/Fooo/p/5507153.html