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