You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确实现QByteArray与QString互转以适配SQLite存储?

解决方案:二进制转文本用Base64/Hex编码

加密后的QByteArray是二进制数据,包含大量非标准文本编码的字节(比如你示例里的\xF7、\xFE),直接用UTF-8或默认字符串构造函数转换会因为编码兼容问题丢失原始数据,导致无法解密。正确的做法是用专门的二进制转文本编码方案:

推荐方案一:Base64编码(最常用)

Base64会把二进制数据转换成仅包含可打印字符的字符串,完全保留原始数据:

  • QByteArray转QString:
QByteArray encodedText = ...; // 加密后的二进制数据
QString storedStr = encodedText.toBase64();
  • QString转回QByteArray(用于解密):
QByteArray restoredBytes = QByteArray::fromBase64(storedStr.toUtf8());

方案二:Hex编码(十六进制文本)

把每个字节转换成两位十六进制字符,同样能完整保留数据:

  • 转QString:
QString storedStr = encodedText.toHex();
  • 转回QByteArray:
QByteArray restoredBytes = QByteArray::fromHex(storedStr.toUtf8());

这两种方式转换后,字符串可以安全存入SQLite,读取转回QByteArray后和加密原始数据完全一致,能正常解密。

内容的提问来源于stack exchange,提问作者Javad_R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 19:30:53