| 
 float型數(shù)據(jù)與字節(jié)數(shù)組的轉(zhuǎn)化 MCU和PC的浮點(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)換。
 
 //轉(zhuǎn)換float數(shù)據(jù)到字節(jié)數(shù)組  unsigned char i;  float floatVariable;  unsigned char charArray[4];  (unsigned char) *pdata = ((unsigned char)*)&floatVariable;  //把float類型的指針強(qiáng)制轉(zhuǎn)換為unsigned char型  for(i=0;i<4;i++)  {      charArray[i] = *pdata++;//把相應(yīng)地址中的數(shù)據(jù)保存到unsigned char數(shù)組中       }    //轉(zhuǎn)換字節(jié)數(shù)組到float數(shù)據(jù)  float   floatVariable;  unsigned char  i;   void   *pf;       pf = &floatVariable;   (unsigned char) * px = charArray;      for(i=0;i<4;i++)  {      *(((unsigned char)*)pf+i)=*(px+i);       }     
 2、使用結(jié)構(gòu)和聯(lián)合 
 //定義結(jié)構(gòu)和聯(lián)合  typedef union   {      struct       {          unsigned char low_byte;          unsigned char mlow_byte;          unsigned char mhigh_byte;          unsigned char high_byte;       }float_byte;                   float  value;  }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ù)。包含的方法如下:   <p><span style="font-size:18px"></span></p>  
 |