2013-08-01 45 views
1

我想将一系列字节写入QDataStream。当在十六进制编辑器查看,我想生成的文件看起来像这样:将单个字节写入QDataStream

0x DEAD 

我的尝试是这样的:

QFile file("test.txt"); 
file.open(QIODevice::WriteOnly); 
QDataStream stream(&file); 
stream << ((char)0xDE); 
stream << ((char)0xAD); 
file.close(); 

当我打开test.txt用十六进制编辑器,我可以看到,而不是写这些单字节,据流他们左填充到完整的单词,而文件看起来是这样的:

0x FFFF FFDE FFFF FFAD 

什么是做到这一点的正确方法?

回答

6

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

它确实有qint8类型的定义。将代码更改为这样可以修复输出:

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