前言:
此时各位老铁们对“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结构体