将单个字节写入QDataStream

时间:2013-08-01 01:54:36

标签: io qt4

我想将一系列字节写入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

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:6)

QIODevice左移运算符(<<)没有char原语的重载定义,因此它会将其转换为int

它确实有qint8类型的定义。将代码更改为如下所示可修复输出:

stream << ((qint8) 0xDE);
stream << ((qint8) 0xAD);