1. 程式人生 > >MFC 將接收的資料轉換為float型輸出

MFC 將接收的資料轉換為float型輸出

結果:四個位元組的資料轉換為了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變數)即可。