我想写一系列字节给a QDataStream.在十六进制编辑器中查看时,我希望生成的文件如下所示:
0x DEAD
Run Code Online (Sandbox Code Playgroud)
我的尝试看起来像这样:
QFile file("test.txt");
file.open(QIODevice::WriteOnly);
QDataStream stream(&file);
stream << ((char)0xDE);
stream << ((char)0xAD);
file.close();
Run Code Online (Sandbox Code Playgroud)
当我test.txt用十六进制编辑器打开时,我可以看到,而不是将它们写为单个字节,DataStream已将它们填充为全字,文件如下所示:
0x FFFF FFDE FFFF FFAD
Run Code Online (Sandbox Code Playgroud)
这样做的正确方法是什么?
小智 6
QIODevice左移运算符(<<)没有char原语的重载定义,所以它会将它转换为int.
它确实有qint8类型的定义.将代码更改为这样可以修复输出:
stream << ((qint8) 0xDE);
stream << ((qint8) 0xAD);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
315 次 |
| 最近记录: |