为什么知道字节流中的字节是什么?

时间:2014-11-26 16:59:33

标签: c++ qt byte

如果我有一个wav文件,它的标题以这种方式启动:

5249 4646

然后,如果我以某种方式读取它(像是一个QByteStream)

char riff[4] // 4 byte
stream.readRawData(riff,4); // reads 4 bytes into the char riff

为什么知道4个字节意味着5249 4646?一个字节52,下一个49,依此类推。 如果是文本.txt文件,则每个可见字符都是一个字节,而不是每两个字节。我们看到的是,流是一样的流吗?

2 个答案:

答案 0 :(得分:4)

5249 4646

实际上是以十六进制表示的4个字节。你可以这样写:

52 49 46 46

更加面向字节。

现在,R的ASCII码是0x52。对于我,它是0x49。对于F,它是0x46。

这些文件的规范要求文件的前4个字节是标题,并且该标题必须是我们在上面选择的4个字节。选择这4个字节的一个很好的理由是,当您在十六进制编辑器中查看文件时,十六进制编辑器将尝试将字节解释为ASCII(如果可以),因此您可以通过简单检查看到前4个字节被解释为ASCII是RIFF,然后你很可能知道它是什么类型的文件。

例如,这是一个在十六进制编辑器中查看的示例WAV文件:

enter image description here

答案 1 :(得分:0)

这4个字节是未知的。你只是读了4个字节,就是这样。单个字节的值介于0到255之间。