1

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

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

4

1 回答 1

7

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

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

stream << ((qint8) 0xDE);
stream << ((qint8) 0xAD);
于 2013-08-01T02:01:56.543 回答