data.bin:

#include<iostream>
#include<fstream>
using namespace std;
//unsigned long nFileBytes;//用于存盤BIN檔案總位元組數
//unsigned char aBinByte[65536];//用于儲存從BIN檔案獲取的資料
struct MINS
{
short gyro_z;;
short gyro_x;
short gyro_y;
short acc_z;
short acc_x;
short acc_y;
};
void main()
{
fstream infile("data",ios::in|ios::binary);
MINS data[5];
cout<<sizeof(data[0])<<endl;
for(int i=0;i<5;i++)
{
infile.seekg(i*19,ios::beg);
infile.seekg(3,ios::cur);
infile.read((char *)&data[i],sizeof(data[0]));
cout<<data[i].gyro_z<<" "<<data[i].gyro_x<<" "<<data[i].gyro_y<<endl;
cout<<data[i].acc_z<<" "<<data[i].acc_x<<" "<<data[i].acc_y<<endl;
}
system("pause");
}
編譯后總是這樣:

感覺可能錯誤在(char*)&data[i];強制型別轉化這里,但是不知道怎么改,大神幫忙啊
uj5u.com熱心網友回復:
從檔案讀寫以前,先判斷一下打開是否成功:if (infile.is_open()
{
...
infile.close();
}
else
{
// 檔案打開失敗...
}
uj5u.com熱心網友回復:
恩,我已經發現了,文獻打開名要.dat但是感覺解出來的資料還是不太對呀。
2個位元組(16進制)轉換成有符號短整形,怎么轉換?
比如第3,4位元組的11 00,表示的是多少呀。感覺解算出來的數值不太對呀!求解!
uj5u.com熱心網友回復:
11 00應該是17uj5u.com熱心網友回復:
11 00是17,難道是00 11嗎?難道是低八位在前,高八位在后?是這個意思嗎?那32位整型,06 4b 6c 84在計算時應該先變成84 6c 4b 06?是這個意思嗎?
uj5u.com熱心網友回復:
大小端的問題...轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/64513.html
標籤:基礎類
