海萤物联网教程:sbc:基于python的C语言格式结构体和二进制转换库
文章目录海萤物联网教程sbc基于python的C语言格式结构体和二进制转换库介绍开源Python和C对应类型使用说明示例海萤物联网教程sbc基于python的C语言格式结构体和二进制转换库本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明.在线文档地址介绍sbc: struct convert binary.C语言格式结构体和二进制转换库.本软件包已上传到pypi,可输入命令直接安装:pipinstallsbc开源github上的项目地址gitee上的项目地址Python和C对应类型本软件包封装了ctypes,支持cytpes所有类型,对应表如下:cyteps typeCtypePython typec_bool_Boolbool (1)c_charchar1-character bytes objectc_wcharwchar_t1-character stringc_bytecharintc_ubyteunsigned charintc_shortshortintc_ushortunsignedshort intc_intintintc_uintunsigned intintc_longlongintc_ulongunsigned longintc_longlong__int64 or long longintc_ulonglongunsigned __int64 or unsigned long longintc_size_tsize_tintc_ssize_tssize_t or Py_ssize_tintc_floatfloatfloatc_doubledoublefloatc_longdoublelong doublefloatc_char_pchar * (NUL terminated)bytes object or Nonec_wchar_pwchar_t * (NUL terminated)string or Nonec_void_pvoid *int or None使用说明软件包支持4种C语言结构类名说明LEFormat1字节对齐的小端结构体LEFormatAlign44字节对齐的小端结构体LEFormatAlign88字节对齐的小端结构体BEFormat1字节对齐的大端结构体BEFormatAlign44字节对齐的大端结构体BEFormatAlign84字节对齐的大端结构体定义C语言结构体需继承对应的结构体,然后在_fields_中定义对应的成员。示例:classTStruct1(sbc.LEFormat):_fields_[# (字段名, c类型)(a,sbc.c_uint32),(b,sbc.c_int16),(c,sbc.c_uint8),]C结构体转换为二进制字节流使用方法encode,二进制字节流转换为C语言结构体使用方法decode.API: C语言格式结构体转换成二进制 :return: 返回二进制字节流 defstruct_to_bytearray(self)-bytearray 二进制转换成C语言结构体 :return: 返回True表示转换成功,False表示转换失败 defbytearray_to_struct(self,data:bytearray)-bool 读取结构体字节数 defsize(self)-int示例importsbcimportunittestclassTStruct1(sbc.LEFormat):_fields_[# (字段名, c类型)(a,sbc.c_uint32),(b,sbc.c_int16),(c,sbc.c_uint8),]classTStruct2(sbc.LEFormatAlign4):_fields_[# (字段名, c类型)(a,sbc.c_uint32),(b,sbc.c_int16),(c,sbc.c_uint8),]classTStruct3(sbc.BEFormat):_fields_[# (字段名, c类型)(a,sbc.c_uint16),(b,sbc.c_uint8*5),(c,sbc.c_uint32),]class_UnitTest(unittest.TestCase):deftest_case1(self): 测试小端1字节对齐,C语言结构体转换为二进制 tsTStruct1()ts.a0x12345678ts.b0x2345ts.c0x67datats.struct_to_bytearray()self.assertEqual(len(data),7)self.assertEqual(data,bytearray([0x78,0x56,0x34,0x12,0x45,0x23,0x67]))deftest_case2(self): 测试小端1字节对齐,二进制转换为C语言结构体 tsTStruct1()ts.bytearray_to_struct(bytearray([0x78,0x56,0x34,0x12,0x45,0x23,0x67]))self.assertEqual(ts.a,0x12345678)self.assertEqual(ts.b,0x2345)self.assertEqual(ts.c,0x67)deftest_case3(self): 测试小端4字节对齐,C语言结构体转换为二进制 tsTStruct2()ts.a0x12345678ts.b0x2345ts.c0x67datats.struct_to_bytearray()self.assertEqual(len(data),8)self.assertEqual(data,bytearray([0x78,0x56,0x34,0x12,0x45,0x23,0x67,0x00]))deftest_case4(self): 测试小端4字节对齐,二进制转换为C语言结构体 tsTStruct2()ts.bytearray_to_struct(bytearray([0x78,0x56,0x34,0x12,0x45,0x23,0x67,0x00]))self.assertEqual(ts.a,0x12345678)self.assertEqual(ts.b,0x2345)self.assertEqual(ts.c,0x67)deftest_case5(self): 测试小端4字节对齐,二进制转换为C语言结构体 tsTStruct2()errts.bytearray_to_struct(bytearray([0x78,0x56,0x34]))self.assertEqual(err,False)deftest_case6(self): 测试大端1字节对齐,C语言结构体转换为二进制 tsTStruct3()ts.a0x2345foriinrange(5):ts.b[i]i ts.c0x12345678datats.struct_to_bytearray()self.assertEqual(len(data),11)self.assertEqual(data,bytearray([0x23,0x45,0x00,0x01,0x02,0x03,0x04,0x12,0x34,0x56,0x78]))defprint_hex(data):foriindata:print(%x%i,end )print()if__name____main__:suiteunittest.TestSuite()runnerunittest.TextTestRunner()runner.run(suite)

相关新闻

如何永久保存微信聊天记录?WeChatMsg终极备份与智能分析完全指南

如何永久保存微信聊天记录?WeChatMsg终极备份与智能分析完全指南

如何永久保存微信聊天记录?WeChatMsg终极备份与智能分析完全指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trendin…

2026/8/13 21:08:29 阅读更多 →
海萤物联网ntp服务上线

海萤物联网ntp服务上线

文章目录海萤物联网ntp服务上线开源介绍服务读取时间服务1读取时间服务2.返回的是结构体自定义错误码示例读取时间读取时区为2的时间读取时区为-6的时间读取结构体格式时间源码main.goconfig.go海萤物联网ntp服务上线 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请…

2026/8/13 21:08:29 阅读更多 →
海萤物联网教程:Go SDK

海萤物联网教程:Go SDK

文章目录海萤物联网教程:Go SDK简介特点开源安装背景知识API默认参数绑定管道注册服务调用目的节点服务请求和应答数据格式完整示例ntp服务器开源地址ntp服务介绍读取时间服务1读取时间服务2.返回的是结构体开放服务示例读取时间服务1读取时间服务2海萤物联网教程&a…

2026/8/13 21:08:29 阅读更多 →

最新新闻

昇腾Model Agent图文交互实战

昇腾Model Agent图文交互实战

昇腾 Model Agent 模型适配模拟微信聊天时,内部直接调用已保存图片的核心实现方案如下: 一、核心实现逻辑该功能的核心在于打通模型 Agent 与本地文件系统的交互,使模型在处理聊天消息时,能够读取并解析用户已保存的图片文件&…

2026/8/13 22:09:01 阅读更多 →
长株潭AI助手实现文本关联生成

长株潭AI助手实现文本关联生成

针对开发一款具备“AI生成文字关联原语句”功能的长株潭主题安卓AI Agent应用,其核心在于构建一个能理解用户输入、关联长株潭相关知识库并生成相关文本的智能体。以下是实现该应用的关键技术路径与核心代码示例。 一、 应用核心架构设计 该应用应采用分层架构&am…

2026/8/13 22:09:01 阅读更多 →
网站建设需求确认书怎么做才靠谱?一份能救命的网站建设需求确认书指南帮你避坑

网站建设需求确认书怎么做才靠谱?一份能救命的网站建设需求确认书指南帮你避坑

很多老板或者项目负责人在找网站建设团队之前,心里都只有一个模糊的概念:“我想要一个高端大气的官网”。然后就把这个任务丢给了设计师或者程序,结果就是沟通成本极高,做完之后发现完全不是自己想要的东西,返工无数,甚至最后烂尾。其实,这中间的巨大鸿沟,全靠一份扎实…

2026/8/13 22:09:01 阅读更多 →
【Bug已解决】[Web] DB-style detection model returns all-zero output on Apple M-series above ~2048px inpu…

【Bug已解决】[Web] DB-style detection model returns all-zero output on Apple M-series above ~2048px inpu…

【Bug已解决】[Web] DB-style detection model returns all-zero output on Apple M-series above ~2048px input - likely fp16 overflow in ReduceMean 解决方案 一、现象长什么样 一个 DB 风格(Differentiable Binarization,文字检测)的 O…

2026/8/13 22:09:01 阅读更多 →
【Bug已解决】QMoE per-channel quantization produces garbage results on CUDA EP, correct on CPU EP 解决方案

【Bug已解决】QMoE per-channel quantization produces garbage results on CUDA EP, correct on CPU EP 解决方案

【Bug已解决】QMoE per-channel quantization produces garbage results on CUDA EP, correct on CPU EP 解决方案 一、现象长什么样 用 ONNX Runtime 的 QMoE(量化 MoE)跑一个做了 per-channel 量化 的专家权重模型。同一个 ONNX,CPUExecuti…

2026/8/13 22:09:01 阅读更多 →
3步搞定M3U8视频下载:告别命令行恐惧的图形化解决方案

3步搞定M3U8视频下载:告别命令行恐惧的图形化解决方案

3步搞定M3U8视频下载:告别命令行恐惧的图形化解决方案 【免费下载链接】N_m3u8DL-CLI-SimpleG N_m3u8DL-CLIs simple GUI 项目地址: https://gitcode.com/gh_mirrors/nm3/N_m3u8DL-CLI-SimpleG 你是否曾遇到心仪的网络视频却无法保存的困扰?&…

2026/8/13 22:08:00 阅读更多 →

日新闻

Visual Studio新建项目解决方案为空:系统性排查与修复指南

Visual Studio新建项目解决方案为空:系统性排查与修复指南

1. 问题现象与本质剖析如果你是一位.NET开发者,或者正准备踏入这个领域,那么Visual Studio(后面简称VS)绝对是你绕不开的伙伴。但有时候,这个伙伴会跟你开一个不大不小的玩笑:你满怀期待地点击“创建新项目…

2026/8/13 0:00:09 阅读更多 →
长春建设厅网站:普通人买房办事必看的真实指南与避坑攻略

长春建设厅网站:普通人买房办事必看的真实指南与避坑攻略

说实话,每次提起“长春建设厅网站”这几个字,我心里都挺有感触的。不是因为它有多高大上,也不是因为那里藏着什么不可告人的秘密,恰恰相反,是因为它太“接地气”了,或者说,它是咱们普通人想要在这个城市好好生活、安稳买房时,必须得翻过的一座“数据山”。很多新朋友第…

2026/8/13 0:00:09 阅读更多 →
Windows家庭版远程桌面多用户破解完整指南:RDPWrap终极解决方案

Windows家庭版远程桌面多用户破解完整指南:RDPWrap终极解决方案

Windows家庭版远程桌面多用户破解完整指南:RDPWrap终极解决方案 【免费下载链接】rdpwrap.ini RDPWrap.ini for RDP Wrapper Library by StasM 项目地址: https://gitcode.com/GitHub_Trending/rd/rdpwrap.ini 你是否曾为Windows家庭版无法支持多用户远程桌面…

2026/8/13 0:00:09 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/13 2:38:34 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/13 10:41:52 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/13 10:41:51 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/13 10:41:50 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/13 10:41:49 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/13 10:41:49 阅读更多 →