Python中如何将QByteArray存储的数据转换为bytes格式
QByteArray 转 Python 原生 bytes 解决方案
Qt 的 Python 绑定(PyQt/PySide 全系列)没有给QByteArray设计单独命名的toBytes()类接口,直接用以下两种方式即可完成转换,适配所有常见版本:
- 通用兼容方案:直接调用Python内置
bytes()构造方法传入QByteArray实例,无版本兼容问题,二进制数据不会出现乱码、丢字节问题
# 示例:构造测试QByteArray对象 qba = QByteArray(b"\x01\x02\x03test content") # 转换为原生bytes py_bytes = bytes(qba)
- 简化写法(适配PyQt5.12+、PySide2/PySide6全版本):直接调用QByteArray实例的
data()方法,返回值本身就是Python原生bytes类型,无需额外转换
py_bytes = qba.data()
注意:不要使用旧版本接口
constData()做转换,该接口返回的是C风格字符串映射,在Python3环境下处理非文本二进制数据时会出现截断、编码错误问题。
转换完成后可以通过isinstance(py_bytes, bytes)做类型校验,返回True即表示转换成功。
内容的提问来源于stack exchange,提问作者cc1cc1
相关产品推荐
相关产品推荐

