2026/5/13 7:37:51
网站建设
项目流程
承德网站开发公司,北京住房和城乡建设网,云服务器wordpress如何上线,最便宜的网站一、问题出现场景
产品使用的一家可燃气检测传感器#xff0c;会传递给我一个已经是浮点数的四字节数据#xff0c;但是我在编写程序时使用实际的浮点数数据注#xff1a;浓度值数据类型为浮点型#xff0c;占4个字节#xff1b;通讯时 先低(16位)后高(16位)#xff0c;高…一、问题出现场景产品使用的一家可燃气检测传感器会传递给我一个已经是浮点数的四字节数据但是我在编写程序时使用实际的浮点数数据注浓度值数据类型为浮点型占4个字节通讯时 先低(16位)后高(16位)高字节在前低字节在后。比如浮点数23.56在内存中为41 BC 7A E1通讯时传输顺序7A E1 41 BC。二、进行四字节的浮点数转换直接上代码【直接可以得到浮点数】#include iostreamfloat 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 cstdintint main() {float value 6.0;uint32_t* floatPtr reinterpret_castuint32_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_castint(bytes[0]) std::endl;std::cout Byte 2: std::hex static_castint(bytes[1]) std::endl;std::cout Byte 3: std::hex static_castint(bytes[2]) std::endl;std::cout Byte 4: std::hex static_castint(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