如何在PySide和Python3.X中向QDataStream写入字节?
在QDataStream的Qt文档中,它说 QDataStream类向QIODevice提供二进制数据的序列化 这就是我想做的。我想在Python3.X上将PySide中的字节发送到如何在PySide和Python3.X中向QDataStream写入字节?,python,qt,pyside,binary-data,qdatastream,Python,Qt,Pyside,Binary Data,Qdatastream,在QDataStream的Qt文档中,它说 QDataStream类向QIODevice提供二进制数据的序列化 这就是我想做的。我想在Python3.X上将PySide中的字节发送到QDataStream writeRawData但是需要unicode作为输入 import zlib from PySide import QtCore file = QtCore.QFile("test.dat") file.open(QtCore.QIODevice.WriteOnly) data = "s
QDataStream
writeRawData
但是需要unicode
作为输入
import zlib
from PySide import QtCore
file = QtCore.QFile("test.dat")
file.open(QtCore.QIODevice.WriteOnly)
data = "some text"
compressed_data = zlib.compress(data.encode()) # type is now bytes
out = QtCore.QDataStream(file)
out.writeRawData(compressed_data)
给出一个类型错误
:
TypeError: 'PySide.QtCore.QDataStream.writeRawData' called with wrong argument types:
PySide.QtCore.QDataStream.writeRawData(bytes)
Supported signatures:
PySide.QtCore.QDataStream.writeRawData(unicode, int)
此外,PySide(1.2.2)未实现来自QDataStream
的writeBytes
那么,如何在PySide和Python3.X中通过QDataStream
发送二进制数据呢
背景:最后,我想通过
QDataStream
方便地将二进制数据发送到QSocket
,并在使用zlib
之前对其进行压缩。我可以回答我自己的问题。解决方案是将字节字符串包装在QByteArray
中,并使用QDataStream
的左/右移位运算符
写作范例:
# wrap data (type byte) in QByteArray
bytearray = QtCore.QByteArray(data)
# write to data stream
qdatastream << bytearray
# allocate empty qbytearray
bytearray = QtCore.QByteArray()
# read from data stream
qdatastream >> bytearray