iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言中的结构体在Python中实现转换
  • 542
分享到

C语言中的结构体在Python中实现转换

2024-04-02 19:04:59 542人浏览 安东尼
摘要

目录struct介绍struct中的常用接口pack()unpack()fmt示例struct介绍 python中提供了struct接口,用来处理类似C语言中的结构体。 处理的方式是

struct介绍

python中提供了struct接口,用来处理类似C语言中的结构体。

处理的方式是将结构体表现位字符串,这个字符串其实就是结构体的一个个字节。

struct中的常用接口

主要就是两个,pack()和unpack()。

pack()就是将结构体转换成字符串(或者说字节序),unpack()则相反。

pack()

pack()函数的说明如下(来自Python 2.7.15 documentation):

struct.pack(fmt, v1, v2, ...) 
Return a string containing the values v1, v2, ... packed according to the given fORMat. 
The arguments must match the values required by the format exactly.

fmt是一个特殊的字符串,用来标记结构体的格式。

v1,v2等相当于结构体中的成员变量。

返回的是一个字符串。

unpack()

unpack()函数的说明如下(来自Python 2.7.15 documentation):

struct.unpack(fmt, string) 
Unpack the string (presumably packed by pack(fmt, ...)) according to the given format. 
The result is a tuple even if it contains exactly one item. 
The string must contain exactly the amount of data required by the format (len(string) must equal calcsize(fmt)).

fmt同pack()。

string就是pack()转换过来的字符串(或者说字节序)。

返回的是一个元组,里面就是一个个的结构体成员变量。

fmt

fmt是struct接口中最重要的部分。

它可以分为两个部分。

第一部分是字节序顺寻和对其等信息,由如下的字符表示:

这个部分是非必需的,如果没有使用上述的任何一个字符,则默认效果同@。

第二部分的字符表示成员的结构体类型(这决定了各个成员需要用多少个字符串表示),由如下的字符表示:

示例

下面是一个示例(使用Python2.7测试OK):

import struct
if __name__ == "__main__":
    result = struct.pack('hhl', 1, 2, 3)            # result is byte string.
    for i in result:
        print '0x%02x' % ord(i)                     # 01 00 02 00 03 00 00 00
    result1 = struct.unpack ('hhl', result)         # byte string is transfered to tuple.
    print type (result1)                            # the type is tuple.
    print result1                                   # (1, 2, 3)

首先是pack(),这里的参数'hhl'表示的是有三个成员,它们的类型分别是short,short和long;它们的值分别是1,2,3.

执行pack()之后返回的字节序列如代码右侧的注释。

由于这里使用的是默认大小端和对齐(本机是小端),所以1对应到short的字节是0x01,0x01,2是0x02,0x02;3对应到long的字节是0x03,0x00,0x00,0x00。

之后的unpack()函数执行之后返回了tuple,其成员分别是1,2,3。

以上就是C语言中的结构体在Python中实现转换的详细内容,更多关于Python转换C语言结构体的资料请关注编程网其它相关文章!

--结束END--

本文标题: C语言中的结构体在Python中实现转换

本文链接: https://www.lsjlt.com/news/118572.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C语言中的结构体在Python中实现转换
    目录struct介绍struct中的常用接口pack()unpack()fmt示例struct介绍 Python中提供了struct接口,用来处理类似C语言中的结构体。 处理的方式是...
    99+
    2022-11-11
  • go语言string转结构体的实现
    在 Go 语言中,可以使用标准库中的 encoding/json 包将 JSON 格式的字符串转换为结构体。 假设有以下 JSON 字符串: { "name": "鸡哥", ...
    99+
    2023-03-19
    go语言string转结构体 go string 结构体
  • 详解Go语言中结构体与JSON间的转换
    目录前言结构体转 JSONJSON 解析结构体小结前言 在日常开发中,我们往往会将 JSON 解析成对应的结构体,反之也会将结构体转成 JSON。接下来本文会通过 JSON 包的两个...
    99+
    2022-12-14
    Go语言 结构体 JSON转换 Go语言 结构体 JSON Go语言结构体 Go语言 JSON
  • C语言中结构体实例解析
    目录一.结构体定义二.实例演示结构体作为函数参数结构体指针三.typedef struct 和 struct的区别1、声明不同2、访问成员变量不同3、重新定义不同总结一.结构体定义 ...
    99+
    2022-11-13
  • C语言中结构体和共用体实例教程
    目录一、实验目的二、实验内容三、实验记录3.1 候选人选票统计3.2 print函数3.3 链表总结一、实验目的 掌握结构体类型变量的定义和使用; 掌握结构体类型...
    99+
    2022-11-12
  • C语言中的结构体怎么使用
    这篇文章主要讲解了“C语言中的结构体怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言中的结构体怎么使用”吧!一、关于结构体在C语言中,结构体(struct)指的是一种数据结构,是...
    99+
    2023-06-16
  • 详解C语言中结构体的使用
    目录结构体的声明结构体成员的类型结构体成员的访问结构体的声明 结构体的定义:结构体是一些值的集合,这些值称为成员变量,结构体的每个成员可以是不同类型的变量。 举例: //定义结构体类...
    99+
    2022-11-13
  • C语言中的结构体快排算法
    目录C语言结构体快排算法基于结构体数组的快速排序C语言结构体快排算法 代码: #include<stdio.h> #include<string.h> #i...
    99+
    2022-11-16
    C语言结构体 结构体快排算法 C结构体快排算法
  • C语言中的结构体如何使用
    本篇内容介绍了“C语言中的结构体如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!结构体的声明结构体的定义:结构体是一些值的集合,这些值...
    99+
    2023-07-02
  • C#语言中结构体的作用是什么
    今天就跟大家聊聊有关C#语言中结构体的作用是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。C#语言的结构体是一个比较复杂的东西,在此之上有很多需要设置的参数,否则用起来就很容易出...
    99+
    2023-06-17
  • C语言中怎么在结构体内定义函数
    这篇“C语言中怎么在结构体内定义函数”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言中怎么在结构体内定义函数”文章吧。如...
    99+
    2023-07-05
  • C语言中如何在结构体内定义函数
    目录如何在结构体内定义函数结构体中引入函数C++中结构体引入C++中类引入结构体成员有函数的定义与使用总结如何在结构体内定义函数 结构体中引入函数 #include <stdi...
    99+
    2023-02-24
    C语言结构体 C语言结构体定义函数 C语言定义函数
  • Python中怎么实现语言转换
    这篇文章将为大家详细讲解有关Python中怎么实现语言转换,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。让Python支持中文要在Python代码头部加上# -*- co...
    99+
    2023-06-17
  • c语言结构体字节对齐的实现方法
    目录1.什么是字节对齐 2.为什么要有字节对齐 3.手动设置对齐 4.结构体比较方法 1.什么是字节对齐 在c语言的结构体里面一般会按照某种规则去进行字节对齐。 我们先看一段代码...
    99+
    2022-11-12
  • C语言中的结构体和共用体怎么使用
    这篇文章主要介绍了C语言中的结构体和共用体怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C语言中的结构体和共用体怎么使用文章都会有所收获,下面我们一起来看看吧。结构体 / struct结构体的定义声明一...
    99+
    2023-06-16
  • C语言中结构体和共用体的示例分析
    这篇文章给大家分享的是有关C语言中结构体和共用体的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、实验目的掌握结构体类型变量的定义和使用;掌握结构体类型数组的概念和应用;掌握链表的概念,初步学会对链表进...
    99+
    2023-06-20
  • 怎么在C语言中自定义结构体和枚举
    这篇文章将为大家详细讲解有关怎么在C语言中自定义结构体和枚举,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C语言是什么C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发,使...
    99+
    2023-06-14
  • 初步剖析C语言编程中的结构体
    C语言结构体,可谓是C强大功能之一,也是C++语言之所以能衍生的有利条件,事实上,当结构体中成员中有函数指针了后,那么,结构体也即C++中的类了。 C语言中,结构体的声明、定义是用到关键字struct,就像...
    99+
    2022-06-04
    语言 结构
  • C语言中的结构体内嵌函数用法
    目录C语言的结构体内嵌函数1.内嵌函数定义举例:经过真实测试2.内嵌函数的个人理解结构体嵌套函数指针解释总结C语言的结构体内嵌函数 看门见山 1.内嵌函数定义举例:经过真实测试 在函...
    99+
    2023-02-24
    C语言结构体 C语言函数 结构体内嵌函数
  • Go语言中怎么实现结构体反射
    本篇文章给大家分享的是有关Go语言中怎么实现结构体反射,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。结构体type Student struct ...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作