在串列埠、iic、spi等資料傳送時基本上都是一次傳送乙個位元組的資料,如果要傳送浮點資料?
通常是將浮點數乘以乙個倍數,如10,100,1000,10000等,然後將其轉換為整型資料再轉化為單個位元組進行傳送。如果這個資料是要進行顯示的話,那麼這樣做並沒有什麼不好。但是如果這個數是要傳輸給另端進行繼續計算的話,那麼就要考慮另一種方法了,就是直接將浮點資料轉換為4個單位元組,在另一端接受完資料後再轉化為浮點資料,這種方式不會造成精度的丟失,計算量也比較小。
程式原始碼:
#include /*
1. float和unsigned long具有相同的資料結構長度
2. union據型別裡的資料存放在相同的物理空間
*/typedef union
floatlongtype; /*
將浮點數f轉化為4個位元組資料存放在byte[4]中
*/void float_to_byte(float f,unsigned char byte)
/*將4個位元組資料byte[4]轉化為浮點數存放在*f中
*/void byte_to_float(float *f,unsigned char byte) /*
測試函式
*/int main();
printf("float data=%f\n",f);
float_to_byte(f,byte);
f=789.123456f;
printf("changed float data=%f\n",f);
byte_to_float(&f,byte);
printf("float data=%f\n",f);
return 0;
}
執行結果:
浮點數與4個位元組的轉換
前言 在串列埠 iic spi等資料傳送時基本上都是一次傳送乙個位元組的資料,如果要傳送浮點資料?通常是將浮點數乘以乙個倍數,如10,100,1000 10000 等,然後將其轉換為整型資料再轉化為單個位元組進行傳送。如果這個資料是要進行顯示的話,那麼這樣做並沒有什麼不好。但是如果這個數是要傳輸給另...
浮點數與位元組資料的轉換
做專案時,碰到乙個問題 如何將32位的浮點數轉化成4個位元組資料進行傳送?下面給出演算法 function ftoc float a decription 浮點數轉化成四個位元組 input output void ftoc float a 例如12.5 0x41 48 00 00 轉換完之後,e ...
浮點數與位元組資料的轉換
摘自 做專案時,碰到乙個問題 如何將32位的浮點數轉化成4個位元組資料進行傳送?下面給出演算法 function ftoc float a decription 浮點數轉化成四個位元組 input output void ftoc float a 例如12.5 0x41 48 00 00 轉換完之後...