将字节转换为两位十六进制数字

时间:2014-03-30 03:39:25

标签: c++ int hex

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转换为整数但是它真的要走了吗?

1 个答案:

答案 0 :(得分:3)

您的计算基于ASCII数字,即。 “f”为102,“0”为48 在计算之前,从0到9之间的每个字分减去'0'(= 48) 其余的('a'-10)(小写)