【利用unsigned char* 指標,在任意型別之間轉換】
直接強制將float強制轉換成int;最後一位丟失精度則 +0.5處理
**
序列通訊是以位元組為單位進行傳送的,對於浮點數和整型數都需要進行轉換位元組陣列才能進行通訊。
mcu和pc的浮點數都是基於ieee754格式的。有4位元組(float)、8位元組(double)、10位元組(有一些不支援)。這裡以4位元組(float)浮點數為例。
轉化常見的方法有:
一、強制指標型別轉換。
// 轉換int資料到位元組陣列
unsigned int intvariable,i;
unsigned char chararray[2];
(unsigned char) * pdata = ((unsigned char)*)&intvariable; //進行指標的強制轉換
for(i=0;i<2;i++)
// 轉換float資料到位元組陣列
unsigned int i;
float floatvariable;
unsigned char chararray[4];
(unsigned char) * pdata = ((unsigned char)*)&floatvariable; //進行指標的強制轉換
for(i=0;i<4;i++)
// 轉換位元組陣列到int資料
unsigned int intvariable="0";
unsigned char i;
void
*pf;
pf =&intvariable;
(unsigned char) * px = chararray;
for(i=0;i<2;i++)
// 轉換位元組陣列到float資料
float
floatvariable="0";
unsigned char i;
void
*pf;
pf =&floatvariable;
(unsigned char) * px = chararray;
for(i=0;i<4;i++)
二、使用結構和聯合
定義結構和聯合如下
typedef union float_byte;
struct float_word;
float value;
}float;
typedef union
d1;unsigned int value;
} int;
使用方法:
對於浮點數:
float floatvariable;在程式中直接使用floatvariable.float_byte.high_byte,floatvariable.float_byte.mhigh_byte,
floatvariable.float_byte.mlow_byte,floatvariable.float_byte.low_byte這四個位元組就可以方便的進行轉換了。
例子:main()
;//四個位元組順序顛倒一下賦值
float x;
x.float_byte.high_byte=0x41;
x.float_byte.mhigh_byte=0xcc;
x.float_byte.mlow_byte=0xda;
x.float_byte.low_byte=0x80;
printf("%f/n",x.value);
}對於整數:
int intvariable;在程式中直接使用intvariable.value.high_byte,intvariable.value.low_byte就ok了。
三、對整型數可以用數**算的方法進行轉換
unsigned int intvariable;
unsigned char low_byte = intvariable%6;
unsigned char high_byte = intvariable/256;
java String 和 int 相互轉換
專案中經常會涉及到資料型別的不一致情況,這是就需要我們稍作處理。這篇文章介紹一下常見的兩種資料型別之間的轉換 string和int。例如 string a test int b 1 區別 int b 1 轉 string 方法一string b b 會產生兩個 string物件 方法二 string...
C string和int相互轉換
int轉string 使用std to string int 返回乙個轉換好的string字串 include string,std to string using namespace std intmain 使用c庫函式sprintf 可以轉化各種進製的數,但缺點是需要提前分配好char陣列 in...
Qt Qstring和float的相互轉換
在使用qt creator程式設計時,難免會用到將float型別轉換為qstring型別的時候下面是我所有的方法 1.將qstring型別轉化為float型別,很簡單 qstring data float num data.tofloat 即可很輕鬆的實現。2.但是如何將float型別轉化為qstr...