Re: [問題]Float的資料用Char的Buffer傳輸
※ 引述《MasterChang (我愛ASM)》之銘言:
: float 4 bytes, double 8 bytes 這個應該沒問題吧?
: 有疑問其實用sizeof()確認一下就好。
: #pragma pack(push)
: #pragma pack(1)
: typedef union{
: float f;
: char b[4];
: }Fto4Bytes_t;
: #pragma pack(pop)
: 這個不需要library....轉個念而已。
我目前也是類似要送資料到嵌入式晶片裡,
本來是用RS232送 是char 8bits合成一個float
union DataSpace
{
unsigned char Quarter[4];
float Full;
}Float_Data;
後面是用 Float_Data.Quarter[k]= (char) 接收到的值
不過現在想改成用藍芽 不過發送的好像是ASCII
所以像是本來送1
改成藍芽發送接收到的就會變成像是 Quarter[0]的 value是"1" decimal是49
可是這樣出來的full就會變成錯誤的 雖然decimal還是49
不過因為是float 所以value就變了
=======================================
大概像是之前是一個float分成4個char的儲存位置存
送3進去Float_Data.Full收到的就是3
不過現在因為直接送的是char 送進去只是存到Float_Data.Quarter[0]="3"的字串
Float_Data.Full出來的就不會是要的float 3這個值
本來想說單獨抓Float_Data.Quarter[0]出來轉換之類
試過什麼float直接強制轉換 或是atof等等的好像也都沒用
不知道這種問題要怎麼處理 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.123.124.28
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1465156038.A.680.html
→
06/06 08:06, , 1F
06/06 08:06, 1F
→
06/06 08:07, , 2F
06/06 08:07, 2F
→
06/06 10:02, , 3F
06/06 10:02, 3F
→
06/06 10:11, , 4F
06/06 10:11, 4F
→
06/06 10:26, , 5F
06/06 10:26, 5F
→
06/06 10:32, , 6F
06/06 10:32, 6F
→
06/06 10:33, , 7F
06/06 10:33, 7F
※ 編輯: wxtab019 (140.123.124.28), 06/06/2016 10:33:54
→
06/06 11:44, , 8F
06/06 11:44, 8F
→
06/06 11:44, , 9F
06/06 11:44, 9F
→
06/06 12:06, , 10F
06/06 12:06, 10F
→
06/06 12:07, , 11F
06/06 12:07, 11F
→
06/06 12:07, , 12F
06/06 12:07, 12F
推
06/06 13:40, , 13F
06/06 13:40, 13F
→
06/06 13:41, , 14F
06/06 13:41, 14F
→
06/06 14:51, , 15F
06/06 14:51, 15F
討論串 (同標題文章)