【问题标题】:Extracting the bytes from a UTF-8 QString从 UTF-8 QString 中提取字节
【发布时间】:2011-11-22 15:21:53
【问题描述】:

我需要从包含 UTF-8 编码的 unicode 字符串的 QString 中提取所有位。

为了清楚起见,我需要将位存储在理想的字节 *(字节数组)或 char * 中。

我需要这样做的原因是因为我想对 UTF-8 字符串进行哈希处理,而哈希函数需要一个字节数组来存储要被哈希处理的字符串。

任何帮助,将不胜感激。

我只想从 QString 中提取比特流,因为它存储在 QString 中并将其转储到一个字节 *.因此,理想情况下,一旦我有了这个 byte * 等价物,我应该能够创建一个新的 QString 并使用这个 char * 在 QString 的构造函数中初始化它,它应该是一个正确的 UTF-8 QString。

【问题讨论】:

    标签: qt


    【解决方案1】:

    您很可能正在寻找您从QString.toUtf8() 获得的QByteArray

    http://doc.qt.io/qt-5/qstring.html#toUtf8

    可以从 QByteArray 重新创建 QString(但请务必使用 QString.fromUtf8,因为采用 QByteArray 的 QString 的构造函数假定它是 ASCII 格式)。

    您可以从 QByteArray 获得对 char* 的 const(或非 const)访问...

    http://doc.qt.io/qt-5/qbytearray.html#data

    ...但请注意,只要您对 MD4、MD5 或 SHA-1 满意,Qt 就内置了对 QByteArray 的加密哈希的支持:

    http://doc.qt.io/qt-5/qcryptographichash.html

    【讨论】:

    • 谢谢!抱歉,Jon Skeet 首先发布了相同的信息,所以我不得不给他答案。
    • 实际上不...您不必给第一个回答者任何优先级。第一个回答者获得更多赞成票有一种自然的偏见,但接受的答案应该是最适合您目的的答案。如果您已经接受了一个答案,您甚至可以更改您接受的答案,稍后会有更好的答案。一定要避免被称为“西部最快的枪”的元数据问题:meta.stackexchange.com/q/19533/141442
    猜你喜欢
    • 2015-07-26
    • 1970-01-01
    • 2011-07-29
    • 1970-01-01
    • 2020-07-15
    • 2014-05-11
    • 2018-01-01
    • 1970-01-01
    • 2011-10-23
    相关资源
    最近更新 更多