# #********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. 关于iscroll.js插件的使用

    iscroll 作用: 可以让区域滚动效果好看一些 使用: 1. html结构 外面必须包一层盒子,切内部的元素要尽量简单,不然会影响滚动效果 <div id="wrapper&quo ...

  2. angular中ng-bind指令小案例

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  3. Windows下PHP的redis扩展下载地址

    Redis下载地址:http://windows.php.net/downloads/pecl/releases/redis/ igbinary下载地址:http://windows.php.net/ ...

  4. JavaScript私有方法

    some concepts: Java is from Sun Microsystem Inc., and JavaScript, called LiveScript before, is from ...

  5. SQLServer之merge函数用法

    MERGE 目标表 USING 源表 ON 匹配条件 WHEN MATCHED THEN 语句 WHEN NOT MATCHED THEN 语句; 其中最后语句分号不可以省略,且源表既可以是一个表也可 ...

  6. 了解权限控制框架shiro 之实际应用.

    Apache Shiro 1.权限控制分为 a.粗粒度 URL 级别权限控制     b.细粒度方法级别权限控制 2.使用shiro进行权限控制主要有四种主要方式 : a. 在程序中 通过 Subje ...

  7. ORACLE 11g 导出数据

    ORACLE 11g 导出 表的时候 不会导出空表 导出空表操作步骤 :(使用PLSQL) 1.打开SQL window 执行下面的 SQL Select 'alter table '||table_ ...

  8. jemeter参数化读取文件

    1.新建一个123.csv文件 如图 2.添加http请求 3.添加一个查看结果树 二.通过函数助手 (1)打开函数助手 ......... 在json属组中引入变量  这是别人参考的

  9. 嵌入式 ThriftServer in Spark

    我们知道在Spark中可以通过start-thriftServer.sh 来启动ThriftServer,之后并可以通过beeline或者JDBC来连接并执行Spark SQL.在一般的Spark应用 ...

  10. [luogu3952 noip2017] 逛公园 (计数dp+最短路)

    传送门 Description Input Output 输出文件包含 T 行,每行一个整数代表答案. Sample Input 2 5 7 2 10 1 2 1 2 4 0 4 5 2 2 3 2 ...