浮點數與4個位元組的轉換

2021-08-15 05:46:15 字數 1193 閱讀 7435

前言:

在串列埠、

iic、

spi等資料傳送時基本上都是一次傳送乙個位元組的資料,如果要傳送浮點資料?

通常是將浮點數乘以乙個倍數,如10,

100,

1000

,10000

等,然後將其轉換為整型資料再轉化為單個位元組進行傳送。如果這個資料是要進行顯示的話,那麼這樣做並沒有什麼不好。但是如果這個數是要傳輸給另端進行繼續計算的話,那麼就要考慮另一種方法了,就是直接將浮點資料轉換為

4個單位元組,在另一端

接受完資料後再轉化為浮點資料,這種方式不會造成精度的丟失,計算量也比較小。

程式原始碼:

[cpp]view plain

copy

#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 轉換完之後...