浮點資料與4個單位元組的轉換

2021-09-26 14:19:28 字數 939 閱讀 5220

在串列埠、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 轉換完之後...