我想将一系列字节写入QDataStream
。在十六进制编辑器中查看时,我希望生成的文件如下所示:
0x DEAD
我的尝试看起来像这样:
QFile file("test.txt");
file.open(QIODevice::WriteOnly);
QDataStream stream(&file);
stream << ((char)0xDE);
stream << ((char)0xAD);
file.close();
当我使用十六进制编辑器打开test.txt
时,我可以看到,不是将它们写为单个字节,而是将DataStream左边填充为完整的单词,文件如下所示:
0x FFFF FFDE FFFF FFAD
这样做的正确方法是什么?
答案 0 :(得分:6)
QIODevice左移运算符(<<
)没有char
原语的重载定义,因此它会将其转换为int
。
它确实有qint8
类型的定义。将代码更改为如下所示可修复输出:
stream << ((qint8) 0xDE);
stream << ((qint8) 0xAD);