news 2026/6/9 20:59:56

进行四字节的浮点数转换互换(指针方法,而不是共用体方法)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
进行四字节的浮点数转换互换(指针方法,而不是共用体方法)

一、问题出现场景
产品使用的一家可燃气检测传感器,会传递给我一个已经是浮点数的四字节数据,但是我在编写程序时使用实际的浮点数数据

注:浓度值数据类型为浮点型,占4个字节;通讯时 先低(16位)后高(16位),高字节在前,低字节在后。(比如浮点数23.56,在内存中为41 BC 7A E1,通讯时传输顺序:7A E1 41 BC。)

二、进行四字节的浮点数转换
直接上代码:【直接可以得到浮点数】

#include <iostream>

float convertBytesToFloat(unsigned char* com_r) {
float sum0 = 0.0;
unsigned char* p0 = (unsigned char*)&sum0;

*p0 = com_r[1];
*(p0 + 1) = com_r[0];
*(p0 + 2) = com_r[3];
*(p0 + 3) = com_r[2];

return sum0;
}

int main() {
unsigned char com_r[10];
com_r[0] = 0x00;
com_r[1] = 0x00;
com_r[2] = 0x42;
com_r[3] = 0x78;

float result = convertBytesToFloat(com_r);

std::cout << "Result: " << result << std::endl;

return 0;
}
AI写代码
cpp
运行

三、将浮点数换成四字节数据
直接行代码:【注意数据传递顺序进行调整】

#include <iostream>
#include <cstdint>

int main() {
float value = 6.0;
uint32_t* floatPtr = reinterpret_cast<uint32_t*>(&value);
uint32_t floatValue = *floatPtr;

uint8_t bytes[4];
for (int i = 0; i < 4; i++) {
bytes[i] = (floatValue >> (8 * i)) & 0xFF;
}

std::cout << "Byte 1: " << std::hex << static_cast<int>(bytes[0]) << std::endl;
std::cout << "Byte 2: " << std::hex << static_cast<int>(bytes[1]) << std::endl;
std::cout << "Byte 3: " << std::hex << static_cast<int>(bytes[2]) << std::endl;
std::cout << "Byte 4: " << std::hex << static_cast<int>(bytes[3]) << std::endl;

return 0;
}
AI写代码
cpp
运行

关于浮点数的知识,大佬已经讲的很清楚,大家可以参考

IEEE754标准: 一 , 浮点数在内存中的存储方式 - 知乎 (zhihu.com)
https://zhuanlan.zhihu.com/p/343033661
————————————————
版权声明:本文为CSDN博主「纸上苍生」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/kingboj/article/details/135117025

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/5 20:57:43

美胸-年美-造相Z-Turbo实测:如何快速生成专业级图片

美胸-年美-造相Z-Turbo实测&#xff1a;如何快速生成专业级图片 1. 这不是普通文生图&#xff0c;而是一次轻量高效的视觉创作体验 你有没有试过这样的场景&#xff1a;需要一张风格统一、细节到位的图片&#xff0c;但找设计师要排期、用传统工具又太耗时&#xff1f;或者想…

作者头像 李华
网站建设 2026/6/6 21:55:50

Jimeng AI Studio 新手教程:3步完成你的第一张AI画作

Jimeng AI Studio 新手教程&#xff1a;3步完成你的第一张AI画作 你是不是也试过打开一堆AI绘画工具&#xff0c;结果被密密麻麻的参数、模型切换、精度设置搞得头晕眼花&#xff1f;输入提示词后等了两分钟&#xff0c;生成的图却模糊得像隔着毛玻璃看风景&#xff1f;别急—…

作者头像 李华
网站建设 2026/6/6 13:07:43

VibeThinker-1.5B上手实录:几分钟就跑通了

VibeThinker-1.5B上手实录&#xff1a;几分钟就跑通了 早上九点&#xff0c;我打开终端&#xff0c;输入三行命令&#xff0c;十分钟后&#xff0c;一个能解数论同余方程、能写出带时间复杂度分析的LeetCode Hard级代码的小模型&#xff0c;已经在我本地GPU上稳稳运行。没有报…

作者头像 李华
网站建设 2026/6/6 20:54:00

保姆级视频教程:Qwen2.5-7B 微调一步到位

保姆级视频教程&#xff1a;Qwen2.5-7B 微调一步到位 1. 这不是“又一个微调教程”&#xff0c;而是你真正能跑通的完整闭环 你可能已经看过太多微调教程——从环境配置到数据准备&#xff0c;从参数调整到结果验证&#xff0c;每个环节都像在解一道复杂的数学题。但最终&…

作者头像 李华
网站建设 2026/6/6 21:33:45

基于Docker-Compose的人大金仓V8R6高可用部署实战

1. 为什么选择Docker-Compose部署人大金仓V8R6 在数据库部署领域&#xff0c;容器化技术已经成为提升效率和可靠性的标配方案。我最早接触人大金仓数据库是在一个政务云项目中&#xff0c;当时客户要求三天内完成从Oracle到国产数据库的迁移测试。传统部署方式需要手动安装依赖…

作者头像 李华
网站建设 2026/6/6 21:20:13

PDF-Parser-1.0入门:从安装到解析全流程

PDF-Parser-1.0入门&#xff1a;从安装到解析全流程 你是否也经历过这样的场景&#xff1a;手头有一份几十页的PDF技术白皮书&#xff0c;想快速提取其中的关键段落、表格数据或公式&#xff0c;却只能一页页手动复制粘贴&#xff1f;或者正在处理一批学术论文&#xff0c;需要…

作者头像 李华