从UTF-8 QString中提取字节

时间:2011-11-22 15:21:54

标签: qt

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

要清楚,我需要将这些位理想地存储在一个字节*(字节数组)中,或者替换为char *。

我需要这样做的原因是因为我想要散列UTF-8字符串并且散列函数需要一个字节数组来处理要散列的字符串。

任何帮助,将不胜感激。

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

1 个答案:

答案 0 :(得分:1)

您最有可能寻找QByteArray获得的QString.toUtf8()

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

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

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