# #********struct模块********#

# 1.按照指定格式将Python数据转换为字符串,该字符串为字节流,如网络传输时,
# 不能传输int,此时先将int转化为字节流,然后再发送;
# 2.按照指定格式将字节流转换为Python指定的数据类型;
# 3.处理二进制数据,如果用struct来处理文件的话,需要用’wb’,’rb’以二
# 进制(字节流)写,读的方式来处理文件;
# 4.处理c语言中的结构体; # struct模块中的函数 # 函数 return explain
# pack(fmt,v1,v2…) string 按照给定的格式(fmt),把数据转换成字符串(字节流),并将该字符串返回.
# pack_into(fmt,buffer,offset,v1,v2…) None 按照给定的格式(fmt),将数据转换成字符串(字节流),并将字节流写入以offset开始的buffer中.(buffer为可写的缓冲区,可用array模块)
# unpack(fmt,v1,v2…..) tuple 按照给定的格式(fmt)解析字节流,并返回解析结果
# pack_from(fmt,buffer,offset) tuple 按照给定的格式(fmt)解析以offset开始的缓冲区,并返回解析结果
# calcsize(fmt) size of fmt 计算给定的格式(fmt)占用多少字节的内存,注意对齐方式 # 当打包或者解包的时,需要按照特定的方式来打包或者解包.该方式就是格式化字符串,
# 它指定了数据类型,除此之外,还有用于控制字节顺序、大小和对齐方式的特殊字符. # 格式符 # 格式符 C语言类型 Python类型 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 long 4
# q long long long 8
# Q unsigned long long long 8
# f float float 4
# d double float 8
# s char[] string
# p char[] string
# P void * long
# 注- -! # _Bool在C99中定义,如果没有这个类型,则将这个类型视为char,一个字节;
# q和Q只适用于64位机器;
# 每个格式前可以有一个数字,表示这个类型的个数,如s格式表示一定长度的字符串,4s表示长度为4的字符串;4i表示四个int;
# P用来转换一个指针,其长度和计算机相关;
# f和d的长度和计算机相关; #对齐方式
# Character Byte order Size Alignment
# @(默认) 本机 本机 本机,凑够4字节
# = 本机 标准 none,按原字节数
# < 小端 标准 none,按原字节数
# > 大端 标准 none,按原字节数
# ! network(大端) 标准 none,按原字节数 # 了解c语言的人,一定会知道struct结构体在c语言中的作用,它定义了一种结构,里面包含不同类型的数据(int,char,bool等等),
# 方便对某一结构对象进行处理。而在网络通信当中,大多传递的数据是以二进制流(binary data)存在的。当传递字符串时,不必
# 担心太多的问题,而当传递诸如int、char之类的基本数据的时候,就需要有一种机制将某些特定的结构体类型打包成二进制流的字
# 符串然后再网络传输,而接收端也应该可以通过某种机制进行解包还原出原始的结构体数据。python中的struct模块就提供了这样
# 的机制,该模块的主要作用就是对python基本类型值与用python字符串格式表示的C struct类型间的转化(This module
# performs conversions between Python values and C structs represented as Python strings.)。stuct模块
# 提供了很简单的几个函数,下面写几个例子。该模块作用是完成Python数值和C语言结构体的Python字符串形式间的转换。这可以
# 用于处理存储在文件中或从网络连接中存储的二进制数据,以及其他数据源。 # ********用途: 在Python基本数据类型和二进制数据之间进行转换
# struct模块提供了用于在字节字符串和Python原生数据类型之间转换函数,比如数字和字符串 # 它除了提供一个Struct类之外,还有许多模块级的函数用于处理结构化的值。这里有个格式符(Format specifiers)的概念,
# 是指从字符串格式转换为已编译的表示形式,类似于正则表达式的处理方式。通常实例化Struct类,调用类方法来完成转换,
# 比直接调用模块函数有效的多。下面的例子都是使用Struct类。 # 好在Python提供了一个struct模块来解决str和其他二进制数据类型的转换。 # struct的pack函数把任意数据类型变成字符串: import struct
print(struct.pack('>I', 10240099))
#结果:b'\x00\x9c@c'
# pack的第一个参数是处理指令,'>I'的意思是:
# >表示字节顺序是big-endian,也就是网络序,I表示4字节无符号整数。
# 后面的参数个数要和处理指令一致。
# unpack把str变成相应的数据类型:
print(struct.unpack('>I', b'\x00\x9c@c'))
#结果:(10240099,)

  

python中struct模块的更多相关文章

  1. python中struct模块及packet和unpacket

    转自:http://www.cnblogs.com/gala/archive/2011/09/22/2184801.html 我们知道python只定义了6种数据类型,字符串,整数,浮点数,列表,元组 ...

  2. 【转】在Python的struct模块中进行数据格式转换的方法

    这篇文章主要介绍了在Python的struct模块中进行数据格式转换的方法,文中还给出了C语言和Python语言的数据类型比较,需要的朋友可以参考下 Python是一门非常简洁的语言,对于数据类型的表 ...

  3. Python学习——struct模块的pack、unpack示例

    he struct module includes functions for converting between strings of bytes and native Python data t ...

  4. python 中 struct 用法

    下面就介绍这个模块中的几个方法. struct.pack():我的理解是,python利用 struct模块将字符(比如说 int,long ,unsized int 等)拆成 字节流(用十六进制表示 ...

  5. Python中optionParser模块的使用方法[转]

    本文以实例形式较为详尽的讲述了Python中optionParser模块的使用方法,对于深入学习Python有很好的借鉴价值.分享给大家供大家参考之用.具体分析如下: 一般来说,Python中有两个内 ...

  6. python中threading模块详解(一)

    python中threading模块详解(一) 来源 http://blog.chinaunix.net/uid-27571599-id-3484048.html threading提供了一个比thr ...

  7. c语言write与python的struct模块交互

    以下讲的都是用二进制形式打开文件.网上有很多struct模块的文章,下面是我做的小实验. 1.对于c里面的fwrite写入一个单字节,写的就是它的二进制.如3,写入文件就是二进制0x03,它并不是3的 ...

  8. 【转】关于python中re模块split方法的使用

    注:最近在研究文本处理,需要用到正则切割文本,所以收索到了这篇文章,很有用,谢谢原作者. 原址:http://blog.sciencenet.cn/blog-314114-775285.html 关于 ...

  9. Python中的模块介绍和使用

    在Python中有一个概念叫做模块(module),这个和C语言中的头文件以及Java中的包很类似,比如在Python中要调用sqrt函数,必须用import关键字引入math这个模块,下面就来了解一 ...

随机推荐

  1. JavaScript实现网页换肤

    <html> <head> <meta charset="utf-8"> <title>无标题文档</title> &l ...

  2. mybatis 高级映射和spring整合之高级映射(4)

    mybatis 高级映射和spring整合之高级映射 ----------------学习结构-------------------- 0.0 对订单商品数据模型进行分析 1.0 高级映射 1.1 一 ...

  3. Windows 10 常用软件推荐

    QQ/TIM 大众的通讯工具,十多年之后的今天,依然是国内常驻用户第一的通讯工具 截图.远程桌面.视频会议.文件传送依旧是非常好用 TIM 算是轻聊版的升级版 微信 for Windows 近年新兴的 ...

  4. Python代码块缓存、小数据池

    引子 前几天遇到了这样一道Python题目:a='123',b='123',下列哪个是正确的? A. a != b B. a is b C. a==123 D. a + b =246 正确答案是B 是 ...

  5. 洛谷P3628 [APIO2010]特别行动队 斜率优化

    裸题,注意队列下标不要写错 Code: #include<cstdio> #include<algorithm> #include<cmath> using nam ...

  6. 4056 hdu4866 Shooting

    题目描述 In the shooting game, the player can choose to stand in the position of [1, X] to shoot, you ca ...

  7. jQuery元素属性操作

    在jQuery中,用attr()方法来获取或者设置元素属性,removeAttr()方法用来删除元素属性. attr() 实例: var $para=$('p');//获取<p>节点 va ...

  8. Disconf使用简单Demo

    创建配置文件 在敲Demo之前,需要在Disconf上创建自己的APP,然后在APP的某个环境下创建配置文件,如下面截图中的流程,这里就简单创建了一个redis.properties,内容是redis ...

  9. sublime Text3的使用

    sublime text百度百科: Sublime Text 是一个代码编辑器,也是HTML和散文先进的文本编辑器.Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python ...

  10. CENTOS 7发送邮件测试

    centos7作为126邮箱客户端发送邮件测试. 首先安装客户端软件: yum install sendmail mailx -y 配置邮箱设置: 开启smtp发件协议 配置授权码,写入配置文件. 追 ...