浮点数在内存中的存储格式

使用 union 类型方式将浮点数的二进制形式保存到 uint32_t 变量中时,需要考虑大小端的影响。

在大端系统中,浮点数的最高字节位于内存的低地址处,而在小端系统中,浮点数的最低字节位于内存的低地址处。因此,当使用 union 类型方式时,如果浮点数和 uint32_t 共用同一段内存空间,需要根据实际的系统大小端模式来确保正确的读取和保存。

以下是一个示例代码,考虑了大小端的影响:

#include <stdio.h>
#include <stdint.h>union FloatToUint32 {float f;uint32_t u;uint8_t bytes[4];
};void flt_to_int(float src, uint32_t *dst) {union FloatToUint32 converter;converter.u =  1;if(converter.bytes[0] == 0){// 如果是小端系统,则将低地址处的 uint32_t 赋值给目标变量converter.f = src;*dst = converter.u;}else{// 如果是大端系统,则将高地址处的 uint32_t 赋值给目标变量converter.f = src;*dst = ((converter.u&0x000000FF)<< 24)|((converter.u&0xFF000000)>> 24)|((converter.u&0x00FF0000)>> 8)|((converter.u&0x0000FF00)<< 8);}
}int main() {float temp = 10000.0f;uint32_t val;flt_to_int(temp, &val);printf("0x%08x\n", val);return 0;
}

示例代码违反misra-c2012-19.2建议规则。使用强转或是memcpy又会违反别的规则  :---)

以下示例可以符合MISRA。

#include <stdint.h>
#include <string.h> // 在主函数之前包含 string.h 头文件
uint32_t flt_to_int(float src);uint32_t flt_to_int(float src)
{uint32_t dest = 0;((unsigned char*)(&dest))[0] = ((unsigned char*)(&src))[0];((unsigned char*)(&dest))[1] = ((unsigned char*)(&src))[1];((unsigned char*)(&dest))[2] = ((unsigned char*)(&src))[2];((unsigned char*)(&dest))[3] = ((unsigned char*)(&src))[3];return dest;
}
int main()
{float temp = 10000.0f;uint32_t val = flt_to_int(temp);printf("%08x", val);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/3598.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++风云录】发现天空之美:使用C++库进行气象图像处理与分析

发现天空之美&#xff1a;使用C库进行气象图像处理与分析 前言 随着环境监测和气象学领域的不断发展&#xff0c;需要借助高效的工具和库来处理和分析大量的数据。C作为一种强大的编程语言&#xff0c;提供了丰富的库和工具&#xff0c;为环境监测和气象学领域的开发人员提供…

【C++风云录】工业革命2.0:开启智能制造时代,利用C++库优化工厂流程

连接未来&#xff1a;探索C库&#xff0c;构建智能工厂和优化生产流程 前言 智能制造和工厂优化是如今工业领域的热门话题。随着技术的不断进步&#xff0c;工厂设备之间的互联和数据采集变得更加重要。C作为一种广泛使用的编程语言&#xff0c;提供了许多强大的库和工具&…

RoadBEV:鸟瞰图中的道路表面重建

1. 代码地址 GitHub - ztsrxh/RoadBEV: Codes for RoadBEV: road surface reconstruction in Birds Eye View 2. 摘要 本文介绍了RoadBEV&#xff1a;鸟瞰图中的道路表面重建。道路表面条件&#xff08;特别是几何形状&#xff09;极大地影响了自动驾驶汽车的驾驶性能。基于…

FastGPT编译前端界面,并将前端界面映射到Docker容器中

建议在linux系统下编译 1、克隆代码 git clone https://github.com/labring/FastGPT 2、进入FastGPT目录&#xff0c;执行 npm install 3、进入projects/app目录&#xff0c;执行 npm run dev 此时会自动下载依赖包&#xff0c;这里如果执行npm install的话&#xff0c;…

某赛通电子文档安全管理系统 NavigationAjax SQL注入漏洞复现

0x01 免责声明 请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;作者不为此承担任何责任。工具来自网络&#xff0c;安全性自测&#xff0c;如有侵权请联系删…

子组件使用this.$emit向父组件传递信息

思考&#xff1a;这种方法相对于使用this.$bus.$emit、this.$bus.$on 发送接受使用更方便快捷。 一般父组件要设定一个接收的参数名&#xff1a; <Son handleClick"handleClick" />我这里的 handleClick就是准备接收子组件传递过来的参数&#xff0c; 一般我…

25计算机考研院校数据分析 | 浙江大学

浙江大学&#xff08;Zhejiang University&#xff09;&#xff0c;简称“浙大”&#xff0c;坐落于“人间天堂”杭州。前身是1897年创建的求是书院&#xff0c;是中国人自己最早创办的新式高等学校之一。 浙江大学由教育部直属、中央直管&#xff08;副部级建制&#xff09;&a…

PHP利用JWT refresh_token获取新access_token

PHP利用JWT refresh_token获取新token 在PHP中使用JWT&#xff08;JSON Web Tokens&#xff09;来刷新refresh_token并获取新的access_token&#xff0c;你需要实现以下步骤&#xff1a; 当用户登录时&#xff0c;生成一个access_token和一个refresh_token。 设置refresh_tok…

Unity 微信小游戏 UI 刘海屏适配

Unity 微信小游戏 UI 屏幕适配 这是微信小游戏官方的适配文档地址&#xff1a; https://github.com/wechat-miniprogram/minigame-unity-webgl-transform/blob/98aed655cc536f1e1dc21524516c40c442594ac1/Design/fixScreen.md 里面的示例代码并不好用&#xff0c;这里给出项目…

rust中结构体的属性默认是不能修改的,要想修改可以有两种方式

Rust中结构体里面的属性默认是不支持修改的&#xff0c;而且默认不是pub的&#xff0c;要想修改的话&#xff0c;有两种方式&#xff0c;我以为和python里面的类似呢&#xff0c;但是还是需要一点技术含量的。如果想在引到外部修改&#xff0c;需要声明pub&#xff0c;如果想在…

(九)Pandas表格样式 学习简要笔记 #Python #CDA学习打卡

目录 一. Pandas表格样式 1&#xff09;举例数据 2&#xff09;字体颜色 3&#xff09;背景高亮 4&#xff09;极值背景高亮 &#xff08;a&#xff09;高亮最大值 highlight_max() &#xff08;b&#xff09;高亮最小值 highlight_min() &#xff08;c&#xff09;同时…

AjaxAxios

Ajax 注&#xff1a;AJAX很少使用&#xff0c;现在都使用更简单的Axios所以只需要了解Ajax即可 概念 AJAX&#xff0c;全称“Asynchronous JavaScript and XML”&#xff08;异步JavaScript和XML&#xff09; 作用&#xff1a; 与服务器进行数据交换&#xff0c;通过Ajax可…

Pytorch:模块(Module类)

文章目录 一、Module类介绍1、主要功能2、神经网络模型使用理解a.前向传播示例代码b.关键点 在 PyTorch 中&#xff0c;Module 是一个非常核心的概念&#xff0c;它是所有神经网络层和模型的基础类。torch.nn.Module 是构建所有神经网络的基类&#xff0c;在 PyTorch 中非常重要…

抖音视频笔记

文章目录 手机录屏如何录入麦克风声音变声 一直不太用抖音等交圈软件。 但是有时想记录下生活中的点滴&#xff0c;比较简单的方式实际就是app&#xff0c;那么了解下吧。 制作完毕后可以保存为草稿&#xff0c;不一定发布的。 手机录屏如何录入麦克风声音 毫无疑问&#xff…

图神经网络 | Pytorch图神经网络ST-GNN

时空图神经网络(Spatio-temporal Graph Neural Network)是一种用于处理时空数据的神经网络模型。它结合了图神经网络(Graph Neural Network)和时空数据的特性,能够对时空关系进行建模和预测。 在时空图神经网络中,数据被组织成图的形式,其中节点表示特定的时空位置,边…

Java NIO概念

Java NIO是什么&#xff1f; Java NIO&#xff0c;全称为Java Non-blocking Input/Output或New IO&#xff0c;是Java平台从JDK 1.4版本开始引入的一套新的输入/输出API。它旨在提供一种更高效、可扩展性更强的IO操作方式&#xff0c;特别适合构建高性能的网络应用和进行大容量…

决策树分析及其在项目管理中的应用

决策树分析是一种分类学习方法&#xff0c;其主要用于解决分类和回归问题。在决策树中&#xff0c;每个内部节点表示一个属性上的测试&#xff0c;每个分支代表一个属性输出&#xff0c;而每个叶节点则代表类或类分布。通过从根节点到内部节点的路径&#xff0c;可以构建一系列…

uniapp制作安卓原生插件踩坑

1.uniapp和Android工程互相引用讲解 uniapp原生Android插件开发入门教程 &#xff08;最新版&#xff09;_uniapp android 插件开发-CSDN博客 2.uniapp引用原生aar目录结构 详细尝试步骤1完成后生成的aar使用&#xff0c;需要新建nativeplugins然后丢进去 3.package.json示例…

深度学习--RNN循环神经网络和LSTM

深度学习中的循环神经网络&#xff08;RNN&#xff09;以及其中的一个变种长短期记忆网络&#xff08;LSTM&#xff09;是在序列数据处理方面非常重要的模型。下面我将详细介绍这两种网络的原理和应用。 循环神经网络&#xff08;RNN&#xff09; 循环神经网络是一类专门用于…

pytest数据驱动DDT(数据库/execl/yaml)

常见的DDT技术 数据结构&#xff1a; 列表、字典、json串 文件&#xff1a; txt、csv、excel 数据库&#xff1a; 数据库链接 数据库提取 参数化&#xff1a; pytest.mark.parametrize() pytest.fixture() …