MFC 將接收的資料轉換為float型輸出
阿新 • • 發佈:2019-02-15
結果:四個位元組的資料轉換為了float型資料,可以輸出顯示
程式碼:CString str; char tempc[4] = { 0x6,0x28,0x1,0x44 }; float tempf; // memcpy(&tempf, tempc, 4); // str.Format(_T("%f"), tempf); 對應的浮點型是 44 01 28 06 對應的浮點型 unsigned int n; memcpy(&n, tempc, 1); n = n << 8; memcpy(&n, &tempc[1], 1); n = n << 8; memcpy(&n, &tempc[2], 1); n = n << 8; memcpy(&n, &tempc[3], 1); memcpy(&tempf, &n, 4); str.Format(_T("%f"), tempf); SetDlgItemText(IDC_EDIT1, str); MessageBox(str);
過程:用char型陣列,接收發送的十六位進位制資料,比如C1 48 00 00,那麼轉換為float型應為-12.5,使用強制轉換,即先定義一個float型的變數,再將記憶體裡的資料copy進去。但是發現數據不太對,因為copy時char型數組裡的高位元組資料(比如char[0])的被放在了float變數的低位元組,所以float存放的資料變為了00 00 48 C1;所以先把資料存入int型的變數,每存入一位元組左移八位,然後copy int型變數裡的資料到float型,然後輸出format(“%f”,定義的float變數)即可。