news 2026/10/21 5:46:18

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

作者头像

张小明

前端开发工程师

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/10/18 7:38:43

Flash Attention加持!YOLOv12镜像训练提速秘诀

Flash Attention加持&#xff01;YOLOv12镜像训练提速秘诀 在目标检测工程实践中&#xff0c;一个反复出现的痛点是&#xff1a;明明模型结构更先进&#xff0c;训练却卡在显存瓶颈和速度拖累上。YOLOv12作为首代真正意义上“以注意力为核心”的实时检测器&#xff0c;其突破性…

作者头像 李华
网站建设 2026/10/20 8:46:35

Z-Image-ComfyUI本地运行只需三步,超快上手

Z-Image-ComfyUI本地运行只需三步&#xff0c;超快上手 你有没有试过在本地电脑上点一下就生成一张高清、带中文字、细节丰富的图片&#xff1f;不是等十几秒&#xff0c;而是几乎秒出——输入提示词&#xff0c;鼠标轻点&#xff0c;两秒后结果就出现在屏幕上。这不是演示视频…

作者头像 李华
网站建设 2026/10/17 9:55:44

Godot Unpacker高效使用实战技巧

Godot Unpacker高效使用实战技巧 【免费下载链接】godot-unpacker godot .pck unpacker 项目地址: https://gitcode.com/gh_mirrors/go/godot-unpacker Godot Unpacker是一款专为Godot Engine设计的解包工具&#xff0c;核心功能是解析非加密的.pck文件及游戏可执行文件…

作者头像 李华
网站建设 2026/10/21 4:08:21

工业零件抠图测试,科哥UNet在专业领域的应用

工业零件抠图测试&#xff0c;科哥UNet在专业领域的应用 在制造业数字化转型过程中&#xff0c;工业视觉检测、零件三维建模、自动化质检等环节都高度依赖高质量的前景提取能力。与人像抠图不同&#xff0c;工业零件图像往往具有金属反光强、边缘锐利但细节微小、背景复杂且纹…

作者头像 李华
网站建设 2026/10/18 17:42:30

Z-Image-Turbo输出文件在哪?自动生成路径一查便知

Z-Image-Turbo输出文件在哪&#xff1f;自动生成路径一查便知 1. 问题直击&#xff1a;生成的图到底存哪儿了&#xff1f; 你刚在Z-Image-Turbo WebUI里输入提示词&#xff0c;点击“生成”&#xff0c;几秒后高清图像跃然屏上——可下一秒就犯了难&#xff1a;这张图存在哪&…

作者头像 李华
网站建设 2026/10/12 7:29:26

YOLOE镜像适合初学者的五个理由

YOLOE镜像适合初学者的五个理由 YOLO系列模型早已成为目标检测领域的“国民级”工具&#xff0c;但对刚接触开放词汇检测的新手来说&#xff0c;YOLO-World、GroundingDINO、Segment Anything这些名字背后&#xff0c;往往藏着令人却步的环境配置、依赖冲突、模型加载报错和提…

作者头像 李华