c语言中如何将10进制的浮点数转化为16进制存放到char型数组中?

来源:百度知道 编辑:UC知道 时间:2024/09/19 19:23:49

本人在串口通信中就用到这个,讲浮点数(不谈进制)转化为字符型(楼主所谓的16进制)放入char字符数组。

更精确的说应该是将浮点数,以字节形式放入字节数组(不是char数组哦,因为char是有符号的),用以后续的通信传输(大多数的应用吧)。

我用的基本方法是union(联合)
代码如下:

union UFLOAT
{
float f; // 4个字节浮点型变量
byte by4[4]; // 字节数组,元素为4
}

由于用了union,上面定义的变量占用4字节的内存,也就是说f和by4是共用这4字节内存的。对浮点的转化变得异常简单。

float fNum=100.0; // 待操作的浮点数
byte byBuf[400]; // 可容纳100个转换后的浮点数的整型数组
unsigned int j=0; // 下面用作byBuf的游标
UFLOAT uf; // 用以快速转换的自定义UFLOAT变量
// ...一些运算
// 下面这段代码将fNum转成4字节插入到byBuf中

uf.f=fNum; // 将要转换的浮点数放入UFLOAT变量,此时uf.by[]数组也被赋值了,因为内存是共用的
for (unsigned int i=0;i<4;i++)
{
byBuf[j++]=uf.by4[i];
}

int n=99999;
char sz[16];
sprintf(sz,"%x",n);

浮点数一般都是16进制存储的,你说的10进制浮点数是字符串格式吗?