将16进制字符串转换为QString

如将,0x11,0x22,0x33……,这些16进制的QBytearray原本就是字符串,将其转换为QString

QString TCP_parse::hexStringToQString(const QString& hexString) {
	// 去掉字符串中的空格
	QString hexWithoutSpaces = hexString.simplified();

	// 判断是否为奇数个字符,如果是,在最后添加一个'0'
	if (hexWithoutSpaces.size() % 2 != 0) {
		hexWithoutSpaces.append('0');
	}

	// 将16进制字符串转换为QByteArray
	QByteArray byteArray;
	for (int i = 0; i < hexWithoutSpaces.size(); i += 2) {
		QString byteString = hexWithoutSpaces.mid(i, 2);
		bool ok;
		char byte = static_cast<char>(byteString.toInt(&ok, 16));
		if (!ok) {
			qWarning() << "Invalid hex string";
			return QString();  // 返回空字符串表示转换失败
		}
		byteArray.append(byte);
	}

	// 将QByteArray转换为QString
	QString result = QString::fromUtf8(byteArray);

	return result;
}

你可能感兴趣的:(qt)