本人在串列埠通訊中就用到這個,講浮點數(不談進位制)轉化為字元型(樓主所謂的16進位制)放入char字元陣列。
更精確的說應該是將浮點數,以位元組形式放入位元組陣列(不是char陣列哦,因為char是有符號的),用以後續的通訊傳輸(大多數的應用吧)。
我用的基本方法是union(聯合)
程式碼如下:
union UFLOAT
{
float f; // 4個位元組浮點型變數
byte by4[4]; // 位元組陣列,元素為4
}
由於用了union,上面定義的變數佔用4位元組的記憶體,也就是說f和by4是共用這4位元組記憶體的。對浮點的轉化變得異常簡單。
float fNum=100.0; // 待操作的浮點數
byte byBuf[400]; // 可容納100個轉換後的浮點數的整型陣列
unsigned int j=0; // 下面用作byBuf的遊標
UFLOAT uf; // 用以快速轉換的自定義UFLOAT變數
// ...一些運算
// 下面這段程式碼將fNum轉成4位元組插入到byBuf中
uf.f=fNum; // 將要轉換的浮點數放入UFLOAT變數,此時uf.by[]陣列也被賦值了,因為記憶體是共用的
for (unsigned int i=0;i
byBuf[j++]=uf.by4[i];
本人在串列埠通訊中就用到這個,講浮點數(不談進位制)轉化為字元型(樓主所謂的16進位制)放入char字元陣列。
更精確的說應該是將浮點數,以位元組形式放入位元組陣列(不是char陣列哦,因為char是有符號的),用以後續的通訊傳輸(大多數的應用吧)。
我用的基本方法是union(聯合)
程式碼如下:
union UFLOAT
{
float f; // 4個位元組浮點型變數
byte by4[4]; // 位元組陣列,元素為4
}
由於用了union,上面定義的變數佔用4位元組的記憶體,也就是說f和by4是共用這4位元組記憶體的。對浮點的轉化變得異常簡單。
float fNum=100.0; // 待操作的浮點數
byte byBuf[400]; // 可容納100個轉換後的浮點數的整型陣列
unsigned int j=0; // 下面用作byBuf的遊標
UFLOAT uf; // 用以快速轉換的自定義UFLOAT變數
// ...一些運算
// 下面這段程式碼將fNum轉成4位元組插入到byBuf中
uf.f=fNum; // 將要轉換的浮點數放入UFLOAT變數,此時uf.by[]陣列也被賦值了,因為記憶體是共用的
for (unsigned int i=0;i
{
byBuf[j++]=uf.by4[i];
}