#include <QRegularExpression>
#include <iostream>
int QString2Hex(QString& text, char* buf)
{
// 使用正则表达式验证输入是否是有效的十六进制字符串
QRegularExpression hexRegex("^[0-9A-Fa-f]+$");
QRegularExpressionMatch match = hexRegex.match(text);
bool isValidHex = match.hasMatch();
if (!isValidHex) {
std::cout << "输入的文本不是有效的十六进制字符串" << std::endl;
return 0;
}
// 确保字符串长度是偶数
if (text.length() % 2 != 0) {
std::cout << "十六进制字符串的长度应该是偶数" << std::endl;
return 0;
}
// 将十六进制字符串转换为字节数组
QByteArray byteArray = QByteArray::fromHex(text.toUtf8());
// 将QByteArray中的数据复制到char数组中
memcpy(buf, byteArray.constData(), byteArray.size());
// 现在buf中存储的就是转换后的十六进制数据
// 例如,如果用户输入了"11020ABB",buf将是 {0x11, 0x02, 0x0A, 0xBB}
// 打印buf的内容以验证
for (int i = 0; i < byteArray.size(); ++i) {
std::cout << "buf[" << i << "] = 0x" << std::hex << (int)((unsigned char)buf[i]) << std::endl;
}
return byteArray.size();
}
QString转16进制数组
于 2024-04-23 11:56:01 首次发布