※ 引述《eecheng87 (EEcheng)》之铭言:
: 如题,我想输入010011......想得到output 为 浮点数
: 我的方法是 将0100....读成字串(char阵列) 在读阵列0,1..看看是0还是1
: ,在赋值给整数阵列,再拿这些整数阵列用IEEE的方法算回float,double.
: 这个方法感觉可行,想和各位大大请教是否有更smart的方法可以分享??
其实真正引起我好奇的地方是,直接用型态转型可不可行?
int my_int = 0;
int arr[32];
for(int i=0; i<32; i++) {
my_int <<= 1;
my_int += arr[i];
}
这样会得到一个整数 my_int,这 32 个 bit 就包含了你要的资讯,
接着试着印出 printf("%f\n", my_int),会不会是 IEEE754 的结果,
如果是的话,应该可先用 sprintf(str_float, "%f", my_int) 转成 float string,
再透过 my_flaot = atof(str_float) 转成真正的浮点数。
如果途中遇到 big endian 或 little endian 的问题,做 bit reversal 即可。
我没试过,就交给你了。