unsigned long和float型的强制类型转换问题?

unsigned long和float同为4个字节,但是强制类型转换却不行
float a=123.456;
unsigned long b;
b=(unsigned long)a; //**
a=(float)b;
结果发现把float型的a强制转换为unsigned long型之后小数部分丢掉了
强制转换后这样就相当于直接b=a这样赋值的效果了,但是我目的是想把a中的四个字节对应的赋给b,因为我要想要把a的四个字节用4个BYTE类型来暂时存放,有没有什么方法可以达到这个目的?
比如说 a=123.456 十六进制输出是405EDD2F 但是b=(unsigned long)a;之后b的十六进制输出是20000000,我的目的就是让unsigned long型的b和float型的a十六进制一样,有没有什么办法?

第1个回答  2008-11-09
浮点数转成整数当然会把小数部分抛掉啊

建议你查一下浮点数的十六进制表示
第2个回答  2008-11-09
用memcpy本回答被提问者采纳
第3个回答  2008-11-09
没懂你啥意思