想要将 QString 转换为 GBytes (glib)
我通过将 QString 转换为 GByteArray 尝试了以下操作,然后 将其释放到 GB
extern "C" {
#include <glib.h>
};
#include <QString>
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QString mylongstring = "HELLO_WORLD";
GByteArray *barr;
barr = g_byte_array_new ();
for (int i = 0; i < mylongstring.toLocal8Bit().count(); i++)
{
guint8 *charAt = (guint8*)mylongstring.at(i); //cant convert qchar to uint -> already crashes
g_byte_array_append (barr, (guint8*) charAt, 1);
}
GBytes *gbytes = g_byte_array_free_to_bytes(barr); //should contain the (guint8*) data of mylongstring
return app.exec();
}
最佳答案
为什么不从 QByteArray
中获取 GByteArray
?循环的目的是什么?
我认为您的强制转换导致了问题,因为它没有分配足够的字节,请检查:https://doc.qt.io/qt-5/qbytearray.html#data
通过从 QByteArray data()
获取 GByteArray
重写代码似乎更安全..
QByteArray _string2BA = mylongstring.toLocal8Bit();
char *data = new char[_string2BA.size() + 1];
strcpy(data, _string2BA.data());
GByteArray *barr;
barr = g_byte_array_new ();
barr = (GByteArray*)data;
GBytes *gbytes = g_byte_array_free_to_bytes(barr); //should contain the (guint8*) data of mylongstring
关于将 QString 转换为 GB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57638498/