gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 00:31:30 25 4
gpt4 key购买 nike

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}

所以甚至不接近(顺便说一句。“f”如何等于 105?)。我非常确定这是因为它将数字作为小数 - 如何告诉它这些实际上是十六进制?我可以将每对字符添加到单个字符串并使用 strtol 转换为整数,但这真的可行吗?

最佳答案

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

关于c++ - 将字节转换为两位十六进制数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22739983/

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