如何将一个float类型转换成16进制?

jumpinwind 2002-10-30 02:38:15
如何将一个float类型转换成16进制?
是否有函数或代码?
...全文
775 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Cuttloefish 2002-10-31
  • 打赏
  • 举报
回复
dellric(林),我怀疑你的函数会丢失精度。如果要将一个float转换成string,建议不要直接强制转换。我有一个函数,不知行不行:
char* float_to_string(float f)
{
char buf[100];
ostrstream oss(buf, sizeof(buf));
oss << f; //f在这里被输出到oss的buffer(buf)中,已经变成了char
return buf;
}
以后的操作就简单了,把f的小数部分与整数部分分开存入两个integer类型中,然后再转成hex,还原的时候再重新组装起来,一点东西都不会少。
liqian0108 2002-10-30
  • 打赏
  • 举报
回复
float f=29.298;
cout<<hex<<f<<endl;

you tried it.
dellric 2002-10-30
  • 打赏
  • 举报
回复
给你一个函数
void Float2HexShow(float f)
{
int i ;
unsigned char * lp;
lp = (unsigned char *)&f;
for ( i = 0 ; i < sizeof ( f) ; i ++)
{
printf( "%02X",(unsigned int ) lp[i]);
}
}
jumpinwind 2002-10-30
  • 打赏
  • 举报
回复
需要将转换的结果写到汇编语言的的寄存器中
pro_wang 2002-10-30
  • 打赏
  • 举报
回复
确实时有这方面的函数
nwsuafmouse 2002-10-30
  • 打赏
  • 举报
回复
你可以在输出时用\xhh 转换
或者在用时加’xhh‘来转换
blackmouse2002 2002-10-30
  • 打赏
  • 举报
回复
关注
TianGo123 2002-10-30
  • 打赏
  • 举报
回复
我记得有函数的

webbb 2002-10-30
  • 打赏
  • 举报
回复
目的是什么?
比如13.23435要得到13的16进制还是内存里表示的16进制?
long int tmp;
float f = 13.2345;
tmp = f; //取整在换
...

如果要内存里的浮点表示值:
tmp = &(&f); //不行的话一个字节一个字节取
比如:
long t;
char str[sizeof(f)];
memcpy(str,&f,sizeof(f));
tmp = 0;
for(int i=0;i<sizeof(f);i++)
{
t = str[i];
tmp += t<<(8*i);
}

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧