我很抱歉,它不會讓我標記作業。如何從BitInputStream中讀取每個字符的位數隨每個字符的變化而變化
你好,我正在學校項目中使用霍夫曼編碼來壓縮文件中的數據。在這個任務中,您應該使用BitInputStream對象從文件中讀取數據,我不確定是在JCL中,因爲教授提供的文檔有拼寫錯誤,並且對某些事情不太明確。無論如何,它似乎與擴展InputStream的其他類相同。的代碼我不斷從類論壇得到線如下:
try {
BitInputStream b = new BitInputStream(in);
int data;
while((data = b.readBits(BITS_PER_WORD)) != -1) {
data = b.readBits(BITS_PER_WORD);
q.freq[data]++; //instance variable (size 256) in PriorityQueue q to
//count number of occurrences of each piece of data.
System.out.println(data);
}
}catch(FileNotFoundException e) {
System.out.println("File not found.");
}
catch(IOException e) {
System.out.println("Error while reading file.");
}
...其中@參數中是通用的輸入流對象和BITS_PER_WORD = 8,從常量的接口繼承。問題是,每當我運行它時,它都會跳過文件中的所有其他字符,從第一個開始。因此,例如,包含「在湖邊看到陰森眼睛」的小文件.txt文件。將打印: 101 105 32 121 115 115 101 32 101 114 108 107 46 10('e','i','','y'等)。我想這與嘗試一次讀取8位有關,例如,'a'的ascii值(以位爲單位)爲1100001(7位),空間爲100000(6位)。我想知道如果我不得不改變它試圖讀取的位數(以及我怎麼會這樣做),或者如果我以錯誤的方式來到這裏(我最近才習慣了使用位/字節,可能有些重要的東西我不知道)。
對於冗長的問題,我表示歉意,但是讓我知道我是否忽略了任何重要的信息。謝謝!
歐普,你是對的。謝謝! – user2116710 2013-04-27 00:00:33
請標記爲正確答案。 :-) – user0 2013-04-27 00:02:05