怎样将浮点数转换成16进制字符串???? ???? 怎样将浮点数(float)转换成16进制字符串即0x0000 0000类型的显示出来整数int y 很容易str>Format("%X",y);浮点数就不行了,结果都是0x0 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可能需要先将float转换为CString,然后去除小数点,然后转换为两部分int,然后在转换为CString然后将两个CString相加,即连接。 CString s; double f=12.34; int i3,i4; s.Format("%2.2f",f); char a3[4],a4[4]; sscanf(s,"%[^.].%[^.]",a3,a4); i3=atoi(a3); i4=atoi(a4); s.Format("0x%X.%X",i3,i4); AfxMessageBox(s); 不知道你是要直接把float的内部存储格式直接转换成16进制来观察,还是要先将float舍去小数部分然后转换成16进制?前者:str.Format("%x", f);后者:str.Format("%x", (int)f); 要直接把float的内部存储格式直接转换成16进制来观察 str.Format("%x", f);这个我早都试过了!不行!要按位还是有别的函数? 就像steedhorse(晨星)所说的,以小数点为界,将小数点前面的整数部分和小数部分分别转换。前者:str.Format("%x", (int)f);后者:取得小数部分的位数,并将其转化为整数nf str.Format("%x", nf);之后,合起来就是了 不行就这样:float f = ……;unsigned int * p = reinterpret_cast<unsigned int*>(&f);printf("%08x", *p); 我转过。看我的。FLOAT i;CString strShow;strShow.Format(_T("%X"), *((DWORD*) (&i)));就是这样了。 多谢各位!看我的结果————unsigned char *q;// 文件数据写入的中间转换变量unsigned char ch0,ch1,ch3,ch2; CString str20,str10,str30,str31,str32,str33; q=(unsigned char *)&Float;//地址类型强制转换《《《-----关键是这里!!!呵呵ch0=*q;ch1=*(q+1);ch2=*(q+2);ch3=*(q+3); str30.Format("%2X",(unsigned int)ch0); str31.Format("%2X",(unsigned int)ch1);str32.Format("%2X",(unsigned int)ch2);str33.Format("%2X",(unsigned int)ch3); str10="浮点数用十六进制表示是0X"; str20=str10+str30+str31+str32+str33;依次读出四个字节的内容到char变量中,再str.Format("%X",(unsigned)ch)关键是地址类型强制转换! 我的2006,我的2007。 在Win2k下,有什么办法可以禁止某一Service调用一特定的API,象是ExitWindowsEx之类的。 关于richedit eMbedded Visual C++高手请进来看!送分了!!! 关于文件的读取,快帮忙!! 我的2000、启动不了!!怎么回事? 关于《com本质论》咨询若干问题 为什么不在语言层实现消息机制? 如何禁止一个程序的多个实例同时运行? CWnd::FromHandlePermanent(Handle)是怎么实现的? mfc生成的单文档框架如何改变标题栏的文字阿? 小声问个问题
然后将两个CString相加,即连接。
double f=12.34;
int i3,i4;
s.Format("%2.2f",f);
char a3[4],a4[4];
sscanf(s,"%[^.].%[^.]",a3,a4);
i3=atoi(a3);
i4=atoi(a4);
s.Format("0x%X.%X",i3,i4);
AfxMessageBox(s);
前者:str.Format("%x", f);
后者:str.Format("%x", (int)f);
这个我早都试过了!不行!要按位还是有别的函数?
前者:str.Format("%x", (int)f);
后者:取得小数部分的位数,并将其转化为整数nf
str.Format("%x", nf);
之后,合起来就是了
unsigned int * p = reinterpret_cast<unsigned int*>(&f);
printf("%08x", *p);
FLOAT i;
CString strShow;
strShow.Format(_T("%X"), *((DWORD*) (&i)));
就是这样了。
看我的结果————
unsigned char *q;// 文件数据写入的中间转换变量
unsigned char ch0,ch1,ch3,ch2;
CString str20,str10,str30,str31,str32,str33;
q=(unsigned char *)&Float;//地址类型强制转换《《《-----关键是这里!!!呵呵
ch0=*q;
ch1=*(q+1);
ch2=*(q+2);
ch3=*(q+3); str30.Format("%2X",(unsigned int)ch0);
str31.Format("%2X",(unsigned int)ch1);
str32.Format("%2X",(unsigned int)ch2);
str33.Format("%2X",(unsigned int)ch3);
str10="浮点数用十六进制表示是0X";
str20=str10+str30+str31+str32+str33;
依次读出四个字节的内容到char变量中,再str.Format("%X",(unsigned)ch)关键是地址类型强制转换!