gpt4 book ai didi

c++ - 无法正确将十六进制转换为十进制

转载 作者:行者123 更新时间:2023-11-28 05:06:55 25 4
gpt4 key购买 nike

我无法理解十六进制字节。当手册将 hex-ascii 中的 Header ID 声明为 7Fh 时,这意味着 0111 1111 对吗?根据在线十六进制-十进制转换器,它转换为十进制的 127。

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

我做错了什么?

最佳答案

理论上你是对的,0x7F 是 b01111111,也就是 127。但是......

我假设 memblock 是 char 数组然后你在这里做的是添加两个数字 - '7' 有 55 的十进制值和 'F' 有 70 并得到正确的结果 125..

假设您想将字符串十六进制表示形式转换为数字,您有多种选择,例如strtol , 你也可以在这里查看这个问题 hex string to int

编辑:好的,在你的情况下可以是这样的

string data = "7F03";
string toConvert = data.substr(0, 2);
int val = strtol(toConvert.c_str(), NULL, 16);

关于c++ - 无法正确将十六进制转换为十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44492372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com