1

我有一个python的字节数组b = b'hello',我想用它作为QtextStream的参数来创建一个QtextStream对象,但是QtextStream接受Qt的字节数组而不是Python的。我想知道无论如何要转换python的字节数组到 QByteArray ?

我已经测试了以下代码,看来我不能这样做。

>>> b=b'hello'
>>> from PyQt4.QtCore import *
>>> c=QTextStream(QByteArray(b)).readAll()
>>> c
''
>>>
4

1 回答 1

0

我想问题是QByteArray对象被构造,传递给QTextStream然后立即销毁。QTextStream不会复制数据,它只保留指向数据源的指针。由于源被破坏,无法再读取任何数据。readAll()在尝试使用您的代码的某些变体进行调用时,我什至设法得到分段错误错误。因此,解决方案是将QByteArray对象存储在变量中,只要您需要它。

>>> buf = QByteArray(b)
>>> c = QTextStream(buf).readAll()
>>> c
PyQt4.QtCore.QString(u'hello')

原始问题“如何将 python 的字节数组转换为 QByteArray?” 不要参考你的问题。很容易看出它可以使用明显的方式完成:

>>> QByteArray(b)
PyQt4.QtCore.QByteArray('hello')
于 2013-06-06T21:53:16.367 回答