Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python中的struct

python中的struct

作者头像
py3study
发布于 2020-01-10 04:14:08
发布于 2020-01-10 04:14:08
5510
举报
文章被收录于专栏:python3python3

我们知道python只定义了6种数据类型,字符串,整数,浮点数,列表,元组,字典。但是C语言中有些字节型的变量,在python中该如何实现呢?这点颇为重要,特别是要在网络上进行数据传输的话。

python提供了一个struct模块来提供转换。下面就介绍这个模块中的几个方法。

struct模块中最重要的三个函数是pack(), unpack(), calcsize()

# 按照给定的格式(fmt),把数据封装成字符串(实际上是类似于c结构体的字节流)

pack(fmt,v1, v2, ...)

#按照给定的格式(fmt)解析字节流string,返回解析出来的tuple

unpack(fmt,string)      

#计算给定的格式(fmt)占用多少字节的内存

calcsize(fmt)

参考:

http://blog.sina.com.cn/s/blog_4b5039210100f1tu.html

我的应用(构造zabbix的请求体):

    def gen_request(self, jsons):

        if isinstance(jsons, basestring):

            data = '%s\n' % jsons

        else:

            data = json.dumps(jsons)

        header = 'ZBXD\x01'

        datalen = struct.pack('Q', len(data))

        return header + datalen + data

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/08/18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python中struct.pack()和struct.unpack()用法
python中的struct主要是用来处理C结构数据的,读入时先转换为Python的字符串类型,然后再转换为Python的结构化类型,比如元组(tuple)啥的~。一般输入的渠道来源于文件或者网络的二进制流。
周小董
2019/03/25
16.6K2
Python中struct.pack()和struct.unpack()用法
python struct使用
官方解释:Interpret strings as packed binary data.
李小白是一只喵
2020/04/27
6800
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模块_Python struct模块
有的时候需要用python处理二进制数据,比如,存取文件,socket操作时.这时候,可以使用python的struct模块来完成.可以用 struct来处理c语言中的结构体.
用户7886150
2020/12/22
1.5K0
Python中对字节流/二进制流的操作:struct模块简易使用教程
前言 前段时间使用Python解析IDX文件格式的MNIST数据集,需要对二进制文件进行读取操作,其中我使用的是struct模块。查了网上挺多教程都写的挺好的,不过对新手不是很友好,所以我重新整理了一些笔记以供快速上手。 注:教程中以下四个名词同义:二进制流、二进制数组、字节流、字节数组 快速上手 在struct模块中,将一个整型数字、浮点型数字或字符流(字符数组)转换为字节流(字节数组)时,需要使用格式化字符串fmt告诉struct模块被转换的对象是什么类型,比如整型数字是'i',浮点型数字是'f',一个
用户1332428
2018/03/09
3K0
Python中对字节流/二进制流的操作:struct模块简易使用教程
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 解析MySQL binlog 文件的内容,binlog是二进制存储,python如何解析成我们能读懂的语言呢?答案就是 struct 模块用于 Python 值和用 Python 字节对象表示的 C 结构体之间的转换,可以处理存储在文件,网络或者其他数据源的二进制数据。
用户1278550
2020/06/23
6710
python3中的struct模块使用
struct是python(包括版本2和3)中的内建模块,它用来在c语言中的结构体与python中的字符串之间进行转换,数据一般来自文件或者网络。
py3study
2020/01/10
2.1K0
Python之struct
  (3) 处理二进制数据,如果用struct来处理文件的话,需要用‘wb’/’rb’以二进制写,读的方式来处理文件
全栈程序员站长
2022/07/14
4900
struct模块(用于对象的压缩)
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…..) tu
小小咸鱼YwY
2019/07/24
7680
和MNSIT打个招呼
作为深度学习的入门数据集,MNIST是个很好的选择,我们可以在官网 http://yann.lecun.com/exdb/mnist/下载。
代号404
2018/08/02
4560
和MNSIT打个招呼
python学习笔记7.5-内建模块struct
Python中变量的类型只有列表、元祖、字典、集合等高级抽象类型,并没有像c中定义了位、字节、整型等底层初级类型。因为Python本来就是高级解释性语言,运行的时候都是经过翻译后再在底层运行。如何打通
锦小年
2018/01/02
7500
python网络-TFTP客户端开发(25)
TFTP(Trivial File Transfer Protocol,简单文件传输协议)
Se7eN_HOU
2019/09/11
2.3K0
python网络-TFTP客户端开发(25)
MNIST__数字识别__SOFTMAX
本次MNIST的手写数字识别未采用input_data.py文件,想尝试一下用原始的数据集来运行这个DEMO。
代号404
2018/08/04
9320
MNIST__数字识别__SOFTMAX
一文学会Python标准库struct序列化与反序列化
使用Python标准库struct序列化Python整数、实数、字节串时,需要使用struct模块的pack()函数把对象按指定的格式进行序列化,然后使用文件对象的write()方法将序列化的结果字节串写入以'wb'或'ab'模式打开的二进制文件。读取时需要使用文件对象的read()方法从以'rb'模式打开的二进制文件中读取指定数量的字节串,然后再使用struct模块的unpack()函数反序列化得到原来对象息。如果需要的话,可以使用calcsize()函数计算指定类型序列化时所需要的字节数量。标准库struct中常用的函数及功能下表所示。
Python小屋屋主
2020/02/24
1.4K0
Python基础之:struct和格式化字符
文件的存储内容有两种方式,一种是二进制,一种是文本的形式。如果是以文本的形式存储在文件中,那么从文件中读取的时候就会遇到一个将文本转换为Python中数据类型的问题。实际上即使是文本的形式存储,存储的数据也是也是有结构的,因为Python底层是用C来编写的,这里我们也称之为C结构。
程序那些事
2021/04/16
9270
一篇文章带你剖析Python 字节流处理神器struct
struct是用来解决bytes和其他二进制数据类型的转换的模块,它使得流的操作变得非常简单,完美解决了Python没有字节数据类型的尴尬。
Python进阶者
2020/07/02
2.9K0
面向对象之套接字(socket)和黏包
 一丶套接字(socket)   tcp是基于链接的,必须先启动服务端,然后再启动客户端去链接服务端   基于UDP协议的socket   server端: import socket udp_sk = socket.socket(type=socket.SOCK_DGRAM) #创建一个服务器的套接字 udp_sk.bind(('127.0.0.1',9000)) #绑定服务器套接字 msg,addr = udp_sk.recvfrom(1024) print(msg) udp_sk.s
py3study
2020/01/19
5820
面向对象之套接字(socket)和黏包
Python之黏包的解决
黏包的解决方案 发生黏包主要是因为接收者不知道发送者发送内容的长度,因为tcp协议是根据数据流的,计算机操作系统有缓存机制, 所以当出现连续发送或连续接收的时候,发送的长度和接收的长度不匹配的情况下就
新人小试
2018/04/12
8420
Python之黏包的解决
使用python 实现icmp测试主机存
import os, sys, socket, struct, select, time
py3study
2020/01/11
8600
相关推荐
Python中struct.pack()和struct.unpack()用法
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档