我需要将包含十六进制数字的字符串转换为无符号字符数组。
我在 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/