在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java  C++/ 如果將視頻或者音頻的字節(jié)流解碼成字符流,是否有可能出現(xiàn)任何字符?字節(jié)值是否可能為

如果將視頻或者音頻的字節(jié)流解碼成字符流,是否有可能出現(xiàn)任何字符?字節(jié)值是否可能為-1?

比如:new byte[]{-1}

byte b = (byte) in.read();

讀到某一個字節(jié)b值為-1,并且屬于視頻或者音頻的字節(jié),有可能嗎?

回答
編輯回答
避風港

當然可能!你試試用文本編輯器打開一個MP4視頻文件,看看開頭5-12字節(jié)是不是ftypmp42? 再比如任意一個zip壓縮包,你打開前兩個字節(jié)看看,是不是PK?(這是為了紀念它的發(fā)明人Philip Katz,使得無損壓縮領域絕無可能被壟斷)

對于任意一種二進制格式(除文本文件外的),基本都會按照以下套路存儲文件:

Header + Data

Header部分基本都存在于文件開頭部分若干的固定長度的字節(jié),里面大部分內(nèi)容都是純文本內(nèi)容,因此可以用文本編輯器直接看到這些內(nèi)容,一般都是文件長度啊,作者信息啊,一些編碼數(shù)據(jù)啊等等元數(shù)據(jù)信息。之后才是Data部分。

一些文件甚至還會包含Tail部分,表示文件已經(jīng)結(jié)束了。比如jpeg就屬于這一種。這也是早年流行一時的將壓縮包隱藏到圖片文件中的黑科技的原理。因為有Tail部分,所以圖片瀏覽器就認為文件已經(jīng)結(jié)束了,后面的部分不再視為圖片,于是乎將壓縮包追加到后面的文件內(nèi)容中,可以被壓縮工具識別到。

所以理論上,你完全可以將這些文件的頭部存成一張大表,根據(jù)文件頭的特征確定是什么文件。但目前你沒必要自己這么做了,因為有人已經(jīng)幫你整理好了,MIME了解一下?

2018年7月11日 14:24
編輯回答
任她鬧

是的,因為音視頻都是壓縮格式,出現(xiàn)0~255的任意字符都有可能

2017年10月31日 03:07