PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
C_and_CPP
Re: [問題]Float的資料用Char的Buffer傳輸
作者:
wxtab019
(天霜凝月)
2016-06-06 03:47:16
※ 引述《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等等的好像也都沒用
不知道這種問題要怎麼處理 謝謝
作者:
wxtab019
(天霜凝月)
2016-06-06 08:06:00
目前用ASCII直接-48 或是比對char字元的可以0~9不過就沒辦法像之前那樣送整串數字...還在想怎麼改
作者:
hichcock
(快樂一整年 ^^~~~)
2016-06-06 10:02:00
atof, sprintf....不行嗎
作者: longlongint (華哥爾)
2016-06-06 10:11:00
ssanf
作者:
wxtab019
(天霜凝月)
2016-06-06 10:26:00
sprintf好像要的相反 然後是sscanf() ?
http://i.imgur.com/ntZFgt4.png
亂試一堆方法 結果還是都沒有 輸入的是3
作者: cs8425 (cs)
2016-06-06 11:44:00
float在記憶體不就是4個byte 直接傳4個byte過去另一邊再把那4個byte放回去很難?
作者:
shadow0326
(非議)
2016-06-06 12:06:00
input是binary才需要那個union最轉換吧做你現在input是c-string 幹麻不用atof就好
作者:
chuegou
(chuegou)
2016-06-06 13:40:00
Float_Data.Full = 3.; 我想應該要這樣但是你又說強制轉換沒用...
作者:
wxtab019
(天霜凝月)
2016-06-06 14:51:00
就像上面那張圖試的一樣 雖然也不知道有沒有錯
繼續閱讀
[心得] c++ 11 的 move semantic
descent
[問題] 求給OpenGL初學者的書籍
wawi2
[問題] 用Qt的UDP做語音通話
googled
[問題] opengl 材質貼圖開關
shuian88
[問題] Shannon-fano-elias decode 解碼問題
puppyulove
[討論] UE4做出 blueprint 轉 C++ 了
damody
[問題] 要如何用socket讀取程式輸出的值
a4839500
[問題] 關於把function寫進陣列裡面
HenryLiKing
[問題] 呼叫函式時, 跑錯路徑找到同支.cpp
coolE
Re: [問題] A類別的函式內 呼叫 A類別函式 出錯
Caesar08
Links
booklink
Contact Us: admin [ a t ] ucptt.com