16進バイトの理解に問題があります。 マニュアルでヘッダーIDがhex-asciiで7Fhと記載されている場合、それは0111 1111の意味ですか?オンラインの16進数変換器に従った10進数で127に変換されます。16進数を10進数に正しく変換します
string dataString;
//cout << dataString << endl;
//the output of dataString starts with "7F0304"
struct SENSOR_O
{
fLeader fixedLeader;
vLeader varLeader;
vel velocity;
pos position;
bTrack bottomTrack;
bool error;
std::string error_msg;
};
SENSOR_O datafields;
datafields = ParseData(dataString)
my class::SENSOR_O myclass::ParseData(const std::string &data)
{
const unsigned char *memblock;
ifstream::pos_type size;
ifstream test;
vector<double> dataSum;
int headerID = 125;
int startID = 0;
memblock = reinterpret_cast<const unsigned char *>(data.data());
cout << data[0] << data[1] << data[2] << data[3] << endl;
cout << "check value: "<< memblock[startID] << ", " << memblock[startID+1]<< endl;
cout << "double check value: " << double(memblock[startID]) << ", " << double(memblock[startID+1]) << endl;
cout << "7F should give me 127. Yes? Added total is: " << double(memblock[startID]) + double(memblock[startID+1]) << ends;
}
私が見出力は、私がここで間違ってやっていること
7F03
7, F
55, 70
7F should give me 127. Yes? Added total is: 125
のですか?
ようなものになることができ、あなたのケースで、あなたは、関連するコードの残りの部分を示していただけますか? – xunatai
これで十分であるはずです。何か他のものが必要な場合は教えてください:) –