如果将视频或者音频的字节流解码成字符流,是否有可能出现任何字符?字节值是否可能为-1?
比如:new byte[]{-1}
byte b = (byte) in.read();
读到某一个字节b值为-1,并且属于视频或者音频的字节,有可能吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
比如:new byte[]{-1}
byte b = (byte) in.read();
读到某一个字节b值为-1,并且属于视频或者音频的字节,有可能吗?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
当然可能!你试试用文本编辑器打开一个MP4视频文件,看看开头5-12字节是不是
ftypmp42
? 再比如任意一个zip
压缩包,你打开前两个字节看看,是不是PK
?(这是为了纪念它的发明人Philip Katz
,使得无损压缩领域绝无可能被垄断)对于任意一种二进制格式(除文本文件外的),基本都会按照以下套路存储文件:
Header
部分基本都存在于文件开头部分若干的固定长度的字节,里面大部分内容都是纯文本内容,因此可以用文本编辑器直接看到这些内容,一般都是文件长度啊,作者信息啊,一些编码数据啊等等元数据信息。之后才是Data部分。一些文件甚至还会包含
Tail
部分,表示文件已经结束了。比如jpeg
就属于这一种。这也是早年流行一时的将压缩包隐藏到图片文件中的黑科技的原理。因为有Tail
部分,所以图片浏览器就认为文件已经结束了,后面的部分不再视为图片,于是乎将压缩包追加到后面的文件内容中,可以被压缩工具识别到。所以理论上,你完全可以将这些文件的头部存成一张大表,根据文件头的特征确定是什么文件。但目前你没必要自己这么做了,因为有人已经帮你整理好了,
MIME
了解一下?是的,因为音视频都是压缩格式,出现0~255的任意字符都有可能