如何将python的字节数组转换为QByteArray?

时间:2013-06-06 13:31:15

标签: qt qt4 pyqt pyqt4 pyside

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

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

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

1 个答案:

答案 0 :(得分: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')