c语言中如何将10进制的浮点数转化为16进制存放到char型数组中?
3个回答
展开全部
本人在串口通信中就用到这个,讲浮点数(不谈进制)转化为字符型(楼主所谓的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];
}
更精确的说应该是将浮点数,以字节形式放入字节数组(不是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];
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询