Re: [問題]Float的資料用Char的Buffer傳輸

看板C_and_CPP作者 (chuegou)時間8年前 (2016/02/25 22:26), 8年前編輯推噓4(4010)
留言14則, 9人參與, 最新討論串3/5 (看更多)
※ 引述《MasterChang (我愛ASM)》之銘言: : : → x000032001: 那就直接把float拆成4bytes 不是最快 02/25 16:35 : : 推 qscgy4: 樓上不懂可不可以不要出來嘴? 02/25 16:49 : : → qscgy4: 1.假設他的接收端浮點數不是4byte,你要怎麼處理? 02/25 16:51 : : → qscgy4: 2.我說的方法可以在在不同變數大小輕易轉換,不用任何lib 02/25 16:52 : : → qscgy4: 3.不用任何lib的狀況下,我是不會拆浮點數啦 02/25 16:55 : : → qscgy4: 可以教一下嗎? 02/25 16:55 : 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....轉個念而已。 union是最直覺的方式 我剛開始也是用union 後來發覺前輩都用指標(雖然我不知道那個比較好) 先確認一下大小 float 4byte char 1byte ------------------------ float f; char *cptr = (char*)&f; // 宣告char(1byte)指標cptr指向浮點數f // 用*(cptr+0) , *(cptr+1), *(cptr+2), *(cptr+3)來對f進行操作 // 或用 cptr[0] , cptr[1], cptr[2], cptr[3]來對f進行操作 ------------------------ 這裡要注意的是有些MCU的高位低位順序會不一樣 傳到另一邊重組起來的時候要注意 因為我感覺原PO是在兩個不同平台上作業 先提醒一下 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.230.110.157 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1456410384.A.3C3.html

02/26 03:55, , 1F
以前聽說過byte order的問題,在這會出現嗎? 有點怕怕的
02/26 03:55, 1F

02/26 03:57, , 2F
原po我對不起你,剛剛文章我沒看到最後一段,感謝說明
02/26 03:57, 2F

02/26 11:24, , 3F
確認一下轉出和轉入的機器是什麼endian就好
02/26 11:24, 3F
原來是叫做這兩個名稱 我一直不知道這個現象要怎麼說明XD 感謝補充 ※ 編輯: chuegou (36.230.110.157), 02/26/2016 15:44:28

02/26 19:10, , 4F
大印地安 小印地安 不同機器傳還蠻常遇到的 轉一下就好
02/26 19:10, 4F

02/26 22:20, , 5F
不是印地安, 是大頭小頭...這詞是出自《格列佛遊記》的
02/26 22:20, 5F

02/26 22:21, , 6F
就那個要從蛋的大頭敲開還是小頭敲開的那個故事
02/26 22:21, 6F

02/26 22:22, , 7F
所以那是從 end 衍生成的 endian 這詞, 跟 Indian 完全不同
02/26 22:22, 7F

02/26 22:25, , 8F
居然還有語源考證!給樓上推
02/26 22:25, 8F

02/26 22:51, , 9F
喔喔喔~~!! 原來還有這典故 推!!! 樓上說好的推呢?
02/26 22:51, 9F
別逼我!!! ※ 編輯: chuegou (36.230.110.157), 02/26/2016 22:55:11

02/27 01:26, , 10F
XDDDD
02/27 01:26, 10F

02/27 11:52, , 11F
推LPH66
02/27 11:52, 11F

02/28 09:02, , 12F
蠻有趣的
02/28 09:02, 12F

02/28 13:45, , 13F
推語源考證XDD
02/28 13:45, 13F

03/08 01:31, , 14F
在 buffer 塞一個 flag 表示 endianness 就好
03/08 01:31, 14F
文章代碼(AID): #1MpmyGF3 (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1MpmyGF3 (C_and_CPP)