Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >struct模块(用于对象的压缩)

struct模块(用于对象的压缩)

作者头像
小小咸鱼YwY
发布于 2019-07-24 08:42:31
发布于 2019-07-24 08:42:31
7650
举报
文章被收录于专栏:python-爬虫python-爬虫

6.27自我总结

struct模块

1.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)占用多少字节的内存,注意对齐方式

2.压缩

压缩后的内容 = struct.pack(格式,被压缩的内容)

3.解压

解压被压缩的内容 = struct.unpack(格式,压缩后的内容)

4.格式

格式符

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

5.注意

  1. _Bool在C99中定义,如果没有这个类型,则将这个类型视为char,一个字节;
  2. q和Q只适用于64位机器;
  3. 每个格式前可以有一个数字,表示这个类型的个数,如s格式表示一定长度的字符串,4s表示长度为4的字符串;4i表示四个int;
  4. P用来转换一个指针,其长度和计算机相关;
  5. f和d的长度和计算机相关;
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-06-27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
python3中的struct模块使用
struct是python(包括版本2和3)中的内建模块,它用来在c语言中的结构体与python中的字符串之间进行转换,数据一般来自文件或者网络。
py3study
2020/01/10
2.1K0
Python之struct
  (3) 处理二进制数据,如果用struct来处理文件的话,需要用‘wb’/’rb’以二进制写,读的方式来处理文件
全栈程序员站长
2022/07/14
4870
python struct模块_Python struct模块
有的时候需要用python处理二进制数据,比如,存取文件,socket操作时.这时候,可以使用python的struct模块来完成.可以用 struct来处理c语言中的结构体.
用户7886150
2020/12/22
1.5K0
Python中struct.pack()和struct.unpack()用法
python中的struct主要是用来处理C结构数据的,读入时先转换为Python的字符串类型,然后再转换为Python的结构化类型,比如元组(tuple)啥的~。一般输入的渠道来源于文件或者网络的二进制流。
周小董
2019/03/25
16.5K2
Python中struct.pack()和struct.unpack()用法
Python之struct简介
       看到struct这么英文单词,大家应该并不陌生,因为c/c++中就有struct,在那里struct叫做结构体。在Python中也使用struct,这充分说明了这个struct应该和c/c++中的struct有很深的渊源。Python正是使用struct模块执行Python值和C结构体之间的转换,从而形成Python字节对象。它使用格式字符串作为底层C结构体的紧凑描述,进而根据这个格式字符串转换成Python值。
py3study
2020/01/09
1.8K0
Python学习——struct模块的pack、unpack示例
[work@db-testing-com06-vm3.db01.baidu.com python]$ python struct_pack.py
阳光岛主
2019/02/20
2.2K0
Python中对字节流/二进制流的操作:struct模块简易使用教程
前言 前段时间使用Python解析IDX文件格式的MNIST数据集,需要对二进制文件进行读取操作,其中我使用的是struct模块。查了网上挺多教程都写的挺好的,不过对新手不是很友好,所以我重新整理了一些笔记以供快速上手。 注:教程中以下四个名词同义:二进制流、二进制数组、字节流、字节数组 快速上手 在struct模块中,将一个整型数字、浮点型数字或字符流(字符数组)转换为字节流(字节数组)时,需要使用格式化字符串fmt告诉struct模块被转换的对象是什么类型,比如整型数字是'i',浮点型数字是'f',一个
用户1332428
2018/03/09
3K0
Python中对字节流/二进制流的操作:struct模块简易使用教程
python struct使用
官方解释:Interpret strings as packed binary data.
李小白是一只喵
2020/04/27
6800
python 二进制文件处理
采用python处理二进制文件,文件打开方式需要设置成"rb"或"wb",使读写的数据流是二进制。还需要进行二进制数据和普通数据之间的转换。这时会用到python的包struct里的两个函数pack和unpack。pack函数将普通数据打包成二进制数据;而unpack数据将二进制数据分解成普通数据。
py3study
2020/01/10
1.4K0
python学习笔记7.5-内建模块struct
Python中变量的类型只有列表、元祖、字典、集合等高级抽象类型,并没有像c中定义了位、字节、整型等底层初级类型。因为Python本来就是高级解释性语言,运行的时候都是经过翻译后再在底层运行。如何打通
锦小年
2018/01/02
7470
Python基础之:struct和格式化字符
文件的存储内容有两种方式,一种是二进制,一种是文本的形式。如果是以文本的形式存储在文件中,那么从文件中读取的时候就会遇到一个将文本转换为Python中数据类型的问题。实际上即使是文本的形式存储,存储的数据也是也是有结构的,因为Python底层是用C来编写的,这里我们也称之为C结构。
程序那些事
2021/04/16
9260
python中的struct
我们知道python只定义了6种数据类型,字符串,整数,浮点数,列表,元组,字典。但是C语言中有些字节型的变量,在python中该如何实现呢?这点颇为重要,特别是要在网络上进行数据传输的话。
py3study
2020/01/10
5460
python| struct 模块
最近研究了一下python 解析MySQL binlog 文件的内容,binlog是二进制存储,python如何解析成我们能读懂的语言呢?答案就是 struct 模块用于 Python 值和用 Python 字节对象表示的 C 结构体之间的转换,可以处理存储在文件,网络或者其他数据源的二进制数据。
用户1278550
2020/06/23
6700
python bin文件处理
  rb  以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
py3study
2020/01/08
4.3K0
python bin文件处理
一文学会Python标准库struct序列化与反序列化
使用Python标准库struct序列化Python整数、实数、字节串时,需要使用struct模块的pack()函数把对象按指定的格式进行序列化,然后使用文件对象的write()方法将序列化的结果字节串写入以'wb'或'ab'模式打开的二进制文件。读取时需要使用文件对象的read()方法从以'rb'模式打开的二进制文件中读取指定数量的字节串,然后再使用struct模块的unpack()函数反序列化得到原来对象息。如果需要的话,可以使用calcsize()函数计算指定类型序列化时所需要的字节数量。标准库struct中常用的函数及功能下表所示。
Python小屋屋主
2020/02/24
1.4K0
struct.pack
最近在学习python网络编程这一块,在写简单的socket通信代码时,遇到了struct这个模块的使用,当时不太清楚这到底有和作用,后来查阅了相关资料大概了解了,在这里做一下简单的总结。
andrew_a
2019/07/30
1.6K0
struct.pack
一篇文章带你剖析Python 字节流处理神器struct
struct是用来解决bytes和其他二进制数据类型的转换的模块,它使得流的操作变得非常简单,完美解决了Python没有字节数据类型的尴尬。
Python进阶者
2020/07/02
2.9K0
Python标准库笔记(6) — struct模块
目录[-] 该模块作用是完成Python数值和C语言结构体的Python字符串形式间的转换。这可以用于处理存储在文件中或从网络连接中存储的二进制数据,以及其他数据源。 用途: 在Python基本数据类型和二进制数据之间进行转换 struct模块提供了用于在字节字符串和Python原生数据类型之间转换函数,比如数字和字符串。 模块函数和Struct类 它除了提供一个Struct类之外,还有许多模块级的函数用于处理结构化的值。这里有个格式符(Format specifiers)的概念,是指从字符串格式
jhao104
2018/03/20
1.3K0
和MNSIT打个招呼
作为深度学习的入门数据集,MNIST是个很好的选择,我们可以在官网 http://yann.lecun.com/exdb/mnist/下载。
代号404
2018/08/02
4550
和MNSIT打个招呼
MNIST__数字识别__SOFTMAX
本次MNIST的手写数字识别未采用input_data.py文件,想尝试一下用原始的数据集来运行这个DEMO。
代号404
2018/08/04
9290
MNIST__数字识别__SOFTMAX
相关推荐
python3中的struct模块使用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档