每次从Java

时间:2016-11-26 10:14:31

标签: java file inputstream binaryfiles bit

所以我每次调用方法read()时都会有一个从文件中读取8位的类。所有字符的对应十进制数都在ASCII表中。 现在我遇到了一个字符'É',其ASCII码二进制代码是11001001.当我打电话时结果是正确的

System.out.println(Integer.toBinaryString('É'));

但是,当我以二进制格式打开文件时,实际位是11000011 10001001 00001010.我知道00001010是换行符。但是11000011和10001001肯定与11001001不匹配。我更改了文件并使其仅包含'a',现在该文件仅包含01100001,这是正确的。字符编码是UTF-8。这是我将字符及其频率放入地图的代码

while ((bit = readInputStream()) != -1) {
        if (!bitOccurrence.containsKey(bit))
            bitOccurrence.put(bit, 1);
        else
            bitOccurrence.put(bit, bitOccurrence.get(bit) + 1);
    }

这是私有的readInputStream方法

 private int readInputStream() throws IOException {
    InputStreamReader r = new InputStreamReader(i); // i is the InputStream
    return r.read();

}

所以我的问题是这个问题是如何发生的,如果我每次只能读8位,这个问题的解决方法是什么?

0 个答案:

没有答案
相关问题