C语言实现浮点型数据与字节数组的相互转化
在实现串口通信或网络通信时,通常需要将数据转换为字节流的形式传输,此时需要进行数据格式转换。
MCU和PC的浮点数都是基于IEEE754格式的,有4字节(float)、8字节(double)。以双精度浮点型数据为例,分析强制指针类型转换的方法实现。
#include <stdio.h>
void double2bytes(double data, unsigned char* bytes);
double bytes2double(unsigned char bytes[]);
int main()
{
double d1 = 3.14159;
unsigned char b1[8];
double2bytes(d1, b1);
int i;
for(i=0; i<8; i++)
{
printf("%02X ", b1[i]);
}
printf("\n");
unsigned char b2[8] = {0x6E, 0x86, 0x1B, 0xF0, 0xF9, 0x21, 0x09, 0x40};
double d2 = bytes2double(b2);
printf("%f", d2);
return 0;
}
/**
* 双精度浮点型数据double转字节数组(小端模式)
*/
void double2bytes(double data, unsigned char bytes[])
{
int i;
char* p = (char*)&data; //将double类型的指针强制转换为unsigned char型
for(i=0; i<8; i++)
{
bytes[i] = *p++; //将相应地址中的数据保存到unsigned char数组中
}
}
/**
* 字节数组转双精度浮点型数据double(小端模式)
*/
double bytes2double(unsigned char bytes[])
{
double data = *((double *)bytes); //直接将unsigned char型的指针强制转换为double类型
return data;
}
输出:
6E 86 1B F0 F9 21 09 40
3.141590
版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/04/01/c-language-implementation-of-mutual-conversion-between-floating-point-data-and-byte-arrays/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。
THE END
1
二维码
打赏
海报
C语言实现浮点型数据与字节数组的相互转化
在实现串口通信或网络通信时,通常需要将数据转换为字节流的形式传输,此时需要进行数据格式转换。
MCU和PC的浮点数都是基于IEEE754格式的,有4字节(float)、8……
文章目录
关闭
共有 0 条评论