testRead = testRead.toHex();
std::vector<int> testHexSet;
for(int i = 1; i != testRead.length() + 1; i = i + 2) {
int iValue = ((int)testRead[i-1] * 16) + (int)testRead[i];
testHexSet.push_back(iValue);
}
上面的代码是我尝试转换testRead(QByteArray,基本上是char [])的失败,其内容如下所示:
f0f1f2
分成三个整数。当输入如上所述时,我得到的是:
{1680, 1681, 1682}
所以甚至没有关闭(顺便说一下。&#34; f&#34;等于105?)。我更确定它是因为它将数字作为小数 - 如何告诉它这些实际上是十六进制的?我可以将每对字符添加到单个字符串并使用strtol转换为整数但是它真的要走了吗?
答案 0 :(得分:3)
您的计算基于ASCII数字,即。 “f”为102,“0”为48
在计算之前,从0到9之间的每个字分减去'0'(= 48)
其余的('a'-10)
(小写)