龙空技术网

python:struct模块的使用~~拎包入住

空山画雨 118

前言:

此时各位老铁们对“python提取c结构体”大约比较珍视,小伙伴们都需要知道一些“python提取c结构体”的相关内容。那么小编也在网上搜集了一些关于“python提取c结构体””的相关资讯,希望各位老铁们能喜欢,朋友们快快来了解一下吧!

struct模块的使用:

原理:将一个组简单的数据进行打包,转换成types(字节串)格式发送,或者将一组types格式数据进行解析(转化成所有语言都能解析的数据。C语言)

struct(fmt)

功能:生成结构化对象

参数:fmt定制的数据结构。如:struct(i4sf) i整型,s4个字符,f符点型

st.pack(v1,v2,v3....) 如上:st.pack(1,b”wmph”,1.56)打包成一个整体发送。

功能:将一组数据按照指定格式打包转换为types(字节串)

参数:要打包的数据

返回值:types字节串

st.nupack(types_data)

功能:将types字节串按照指定格式解析

参数:要解析的字符串

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

struct.unpack(fmt,types_data)

返回值:解析后的内容

实例:

发送端:

from socket import *

import struct

sockdf=socket(AF_INET,SOCK_DGRAM)

ADDR=("127.0.0.1",8000)

while True:

int_=int(input("输入学号"))

if not int_:

break

name=input("请输入姓名:")

age=float(input("请输入分数"))

studut=struct.pack("i9sf",int_,name.encode(),age)

sockdf.sendto(studut,ADDR)

接收端

import struct

from socket import *

from struct import *

sockdf=socket(AF_INET,SOCK_DGRAM)

sockdf.bind(("127.0.0.1",8000))

texte=open("text","a+")

while True:

data,addr=sockdf.recvfrom(1024)

str_=struct.unpack("i9sf",data)

texte.write("%d %s %0.2f\n"%(str_[0],str_[1].decode(),str_[2]))

texte.flush()

标签: #python提取c结构体