程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 二進制/十六進制轉浮點數的編程(互轉類似),十六進制點數

二進制/十六進制轉浮點數的編程(互轉類似),十六進制點數

編輯:C++入門知識

二進制/十六進制轉浮點數的編程(互轉類似),十六進制點數


轉換的程序:

// 輸入十進制整數,輸出同樣內存排布的float表示   
inline float i2f(int i)   
{   
    float f = 0;   
    assert(sizeof(int) == sizeof(float));   
    memcpy(&f, &i, 4);   
    return f;   
}   
   
inline double ll2d(long long ll)   
{   
    double d = 0;   
    assert(sizeof(double) == sizeof(long long));   
    memcpy(&d, &ll, 8);   
    return d;   
}   /* 何問起 hovertree.com */

 應用:

int i = -1052770304;    // 反匯編看到的值是這樣,實際是個float型,=-12.0   
float f = i2f(i);   
printf("f=%f\n", f);   
   
long long ll = 0x4004000000000000L;     // 內存裡顯示成這樣。 實際是double型2.5   
double d = ll2d(ll);   
printf("d=%f\n", d);  /* 何問起 hovertree.com */

原理就是復制內存數據再以不同的數據類型來解釋。

推薦:http://www.cnblogs.com/roucheng/p/cpp11.html

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved