c - 将十六进制字符串转换为十六进制字符数组的快速方法

标签 c string qt hex

我需要将包含十六进制数字的字符串转换为无符号字符数组。

我在 QT 中有这段代码:

QString data
...
QByteArray byteArray;
int bufSize = (data.length()) / 2;
for (int i = 0; i < bufSize; i++)
   {
   byteArray[i] = data.mid(2*i, 2).toInt(NULL, 16);//Read the string two characters at a time.
   }

我需要在 C 中执行相同的操作,但我不知道如何转换它。

有人可以帮助我吗?

最佳答案

最快的方法是使用查找数组:

int cvt[UCHAR_MAX+1] = {0};
cvt['0'] = 0;
cvt['1'] = 1;
// ...
cvt['9'] = 9;
cvt['a'] = 10;
// ...
cvt['f'] = 15;
cvt['A'] = 10;
// ...
cvt['F'] = 15;
for (i = 0; i < sizeof arr; i++) {
    arr[i] = 16 * cvt[(unsigned char)data[2*i]] +
                  cvt[(unsigned char)data[2*i + 1]];
}

关于c - 将十六进制字符串转换为十六进制字符数组的快速方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22807969/

相关文章:

oop - 这种设计模式的名称?

c - 使用滚动条调整窗口大小时出现奇怪的效果

c - 试图理解 C 中的递归

c - 如何检索 CreateFile 结果的 FILE*?

java - 将 Clob 转换为字符串

qt - Windows 中的 qt 调试器?

c - 数组边界在 ']' 标记之前不是整数常量,而实际上它是常量

Python 2.7 str(055) 返回 "45"而不是 055

python - 错误 : TypeError: 'str' object cannot be interpreted as an integer while trying to pick a random winner (Python)

c++ - 我如何声明 Qt 信号以便 Resharper 不给我警告?