昨天晚上朋友让帮忙写个程序,C++中将float转换成二进制流输出,刚开始一点点的转啊,哎,直接哭了。一晚上也没搞定。
回去查了点资料,又找同学商量了一下,找到个相对好的点的方法,验证了几个,结果是对的,但也不保证其他的也对,贴出来,大家交流一下
步骤:
1、首先取float的地址,强制转换成char*类型后赋值给一个char *的指针cp,然后对cp开始的四个字节按照char类型转换成二进制字符串。
2、转换结束之后,对计算机进行高低字节序判断,若是高字节序,则对得到的二进制字符串进行逆序。
==》这一步有问题,字节序判断后的调整不应该是对整个二进制字符串进行逆序,而是对四个字节进行顺序调整,在此谢谢 Azrael_cc 兄,代码直接调整了一下,没验证结果
代码:
#include <iostream>
#include <string>
using namespace std;
string c2b(char *cp, int n);
int isBigEndian();
int main()
{
float fval = (float)4.25;
char