[問題]把 float中的位元組取出來@@

看板C_and_CPP (C/C++)作者 (我是徐徐GO)時間16年前 (2010/05/14 15:40), 編輯推噓3(308)
留言11則, 3人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 我想要用uart傳float的資料,想要把float內的各個位元組(如0A,22,f5,54) 一個一個傳出去,不知道c語言有沒有相關的函式或功能可以把float的位元組切割 或提取出來?或是可以把她轉成boolen array的形式?? 希望得到的正確結果: 程式跑出來的錯誤結果: 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) 有問題的code: (請善用置底文標色功能) 補充說明: -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.44.2 ※ 編輯: waijan 來自: 140.112.44.2 (05/14 15:43)

05/14 15:47, , 1F
cast成char * 再用%hhx印出來 要注意endian就是了
05/14 15:47, 1F

05/14 15:53, , 2F
對不起請問cast是什麼意思?我剛學c所以不是很熟@@
05/14 15:53, 2F

05/14 15:57, , 3F
假設 float f; 用 ((unsigned char*)&f)[?] ?是0~3
05/14 15:57, 3F

05/14 15:58, , 4F
就是強制取float的address出來, 再強制用char的指標去解
05/14 15:58, 4F

05/14 15:58, , 5F
釋這連續的4 byte, 就可以達到你要的效果.
05/14 15:58, 5F

05/14 16:01, , 6F
OK太感謝!!我是試看
05/14 16:01, 6F

05/14 16:01, , 7F
不過, 用union可以更簡單的達到你想要的.
05/14 16:01, 7F

05/14 16:03, , 8F
union BYTE4{ float f; unsigned char b[4]; };
05/14 16:03, 8F

05/14 16:03, , 9F
BYTE4 test; float資料用test.f存, 要byte的資料從
05/14 16:03, 9F

05/14 16:03, , 10F
test.b[0] ~ test.b[3]取; 同樣都要注意endian問題.
05/14 16:03, 10F

05/14 16:04, , 11F
話說, 應該不是boolean array, 是byte或char array吧@@
05/14 16:04, 11F
文章代碼(AID): #1BxFw6S5 (C_and_CPP)
文章代碼(AID): #1BxFw6S5 (C_and_CPP)