※ 引述《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 即可。
我沒試過,就交給你了。