小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

float型數(shù)據(jù)與字節(jié)數(shù)組的轉(zhuǎn)化

 烽戰(zhàn)哈哈 2016-05-23

float型數(shù)據(jù)與字節(jié)數(shù)組的轉(zhuǎn)化

MCUPC的浮點(diǎn)數(shù)都是基于IEEE754格式的。有4字節(jié)(float)、8字節(jié)(double)、10字節(jié)(有一些不支持)。這里以4字節(jié)(float)浮點(diǎn)數(shù)為例。

一、C語言
轉(zhuǎn)化常見的方法有:
1
、強(qiáng)制指針類型轉(zhuǎn)換。

  1. //轉(zhuǎn)換float數(shù)據(jù)到字節(jié)數(shù)組  
  2. unsigned char i;  
  3. float floatVariable;  
  4. unsigned char charArray[4];  
  5. (unsigned char) *pdata = ((unsigned char)*)&floatVariable;  //把float類型的指針強(qiáng)制轉(zhuǎn)換為unsigned char型  
  6. for(i=0;i<4;i++)  
  7. {  
  8.     charArray[i] = *pdata++;//把相應(yīng)地址中的數(shù)據(jù)保存到unsigned char數(shù)組中       
  9. }  
  10.   
  11. //轉(zhuǎn)換字節(jié)數(shù)組到float數(shù)據(jù)  
  12. float   floatVariable;  
  13. unsigned char  i;   
  14. void   *pf;       
  15. pf = &floatVariable;   
  16. (unsigned char) * px = charArray;    
  17.   
  18. for(i=0;i<4;i++)  
  19. {  
  20.     *(((unsigned char)*)pf+i)=*(px+i);       
  21. }     


2、使用結(jié)構(gòu)和聯(lián)合

  1. //定義結(jié)構(gòu)和聯(lián)合  
  2. typedef union   
  3. {  
  4.     struct   
  5.     {  
  6.         unsigned char low_byte;  
  7.         unsigned char mlow_byte;  
  8.         unsigned char mhigh_byte;  
  9.         unsigned char high_byte;  
  10.      }float_byte;  
  11.             
  12.      float  value;  
  13. }FLAOT_UNION;  


這樣可以在程序中直接對(duì)各數(shù)據(jù)賦值,然后獲取數(shù)據(jù)。如對(duì)float_byte中的各字節(jié)賦值,可以直接從value中獲取float型數(shù)據(jù),反之亦然。

注意,從上面的轉(zhuǎn)換可以看到,對(duì)于定義的數(shù)組unsignedchar charArray[4],一般charArray[0]代表低字節(jié),charArray[3]代表高字節(jié)。

二、c#

c#中可以使用BitConverter類中的函數(shù)進(jìn)行轉(zhuǎn)換,如下:

名稱

說明

GetBytes(Double)

以字節(jié)數(shù)組的形式返回指定的雙精度浮點(diǎn)值。

GetBytes(Single)

以字節(jié)數(shù)組的形式返回指定的單精度浮點(diǎn)值。

ToDouble

返回由字節(jié)數(shù)組中指定位置的八個(gè)字節(jié)轉(zhuǎn)換來的雙精度浮點(diǎn)數(shù)。

ToSingle

返回由字節(jié)數(shù)組中指定位置的四個(gè)字節(jié)轉(zhuǎn)換來的單精度浮點(diǎn)數(shù)。

BitConverter類進(jìn)行基礎(chǔ)數(shù)據(jù)類型與字節(jié)數(shù)組之間的相互轉(zhuǎn)換,此類便于操作基本形式的類型。一個(gè)字節(jié)定義為一個(gè) 8位無符號(hào)整數(shù)。包含的方法如下:

名稱

說明

DoubleToInt64Bits

將指定的雙精度浮點(diǎn)數(shù)轉(zhuǎn)換為 64 位有符號(hào)整數(shù)。

GetBytes(Boolean)

以字節(jié)數(shù)組的形式返回指定的布爾值。

GetBytes(Char)

以字節(jié)數(shù)組的形式返回指定的 Unicode 字符值。

GetBytes(Double)

以字節(jié)數(shù)組的形式返回指定的雙精度浮點(diǎn)值。

GetBytes(Int16)

以字節(jié)數(shù)組的形式返回指定的 16 位有符號(hào)整數(shù)值。

GetBytes(Int32)

以字節(jié)數(shù)組的形式返回指定的 32 位有符號(hào)整數(shù)值。

GetBytes(Int64)

以字節(jié)數(shù)組的形式返回指定的 64 位有符號(hào)整數(shù)值。

GetBytes(Single)

以字節(jié)數(shù)組的形式返回指定的單精度浮點(diǎn)值。

GetBytes(UInt16)

以字節(jié)數(shù)組的形式返回指定的 16 位無符號(hào)整數(shù)值。

GetBytes(UInt32)

以字節(jié)數(shù)組的形式返回指定的 32 位無符號(hào)整數(shù)值。

GetBytes(UInt64)

以字節(jié)數(shù)組的形式返回指定的 64 位無符號(hào)整數(shù)值。

Int64BitsToDouble

將指定的 64 位有符號(hào)整數(shù)轉(zhuǎn)換成雙精度浮點(diǎn)數(shù)。

ToBoolean

返回由字節(jié)數(shù)組中指定位置的一個(gè)字節(jié)轉(zhuǎn)換來的布爾值。

ToChar

返回由字節(jié)數(shù)組中指定位置的兩個(gè)字節(jié)轉(zhuǎn)換來的 Unicode 字符。

ToDouble

返回由字節(jié)數(shù)組中指定位置的八個(gè)字節(jié)轉(zhuǎn)換來的雙精度浮點(diǎn)數(shù)。

ToInt16

返回由字節(jié)數(shù)組中指定位置的兩個(gè)字節(jié)轉(zhuǎn)換來的 16 位有符號(hào)整數(shù)。

ToInt32

返回由字節(jié)數(shù)組中指定位置的四個(gè)字節(jié)轉(zhuǎn)換來的 32 位有符號(hào)整數(shù)。

ToInt64

返回由字節(jié)數(shù)組中指定位置的八個(gè)字節(jié)轉(zhuǎn)換來的 64 位有符號(hào)整數(shù)。

ToSingle

返回由字節(jié)數(shù)組中指定位置的四個(gè)字節(jié)轉(zhuǎn)換來的單精度浮點(diǎn)數(shù)。

ToString( array<Byte []()>[])

將指定的字節(jié)數(shù)組的每個(gè)元素的數(shù)值轉(zhuǎn)換為它的等效十六進(jìn)制字符串表示形式。

ToString( array<Byte []()>[], Int32)

將指定的字節(jié)子數(shù)組的每個(gè)元素的數(shù)值轉(zhuǎn)換為它的等效十六進(jìn)制字符串表示形式。

ToString( array<Byte []()>[], Int32, Int32)

將指定的字節(jié)子數(shù)組的每個(gè)元素的數(shù)值轉(zhuǎn)換為它的等效十六進(jìn)制字符串表示形式。

ToUInt16

返回由字節(jié)數(shù)組中指定位置的兩個(gè)字節(jié)轉(zhuǎn)換來的 16 位無符號(hào)整數(shù)。

ToUInt32

返回由字節(jié)數(shù)組中指定位置的四個(gè)字節(jié)轉(zhuǎn)換來的 32 位無符號(hào)整數(shù)。

ToUInt64

返回由字節(jié)數(shù)組中指定位置的八個(gè)字節(jié)轉(zhuǎn)換來的 64 位無符號(hào)整數(shù)。

 

  1. <p><span style="font-size:18px"></span></p>  

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多