【发布时间】:2021-12-06 15:06:08
【问题描述】:
我正在尝试找到一种将 char(前提是 char 只能是“0”或“1”)转换为 Java 中的实际位的方法。我不确定 Java 是否为此提供了一些内置功能,或者是否有可以实现的算法。
我需要实现以下类:
public void writeBit(char bit) {
//PRE:bit == '0' || bit == '1'
try {
} catch (IOException e) {
System.out.println(e);
}
}
我无法以任何方式更改方法结构。我正在实现霍夫曼编码,并有一个字符串数组,代表输入文件中每个字符的编码。例如,'A' 或 array[65] 包含字符串:“01011”。因此,如果我在文件中看到字母 A,我需要使用 writeBit 将 A 的相应字符串写入二进制文件。每次达到 8 位(一个字节)时,我都会调用 writeByte 将这 8 位发送到二进制文件,然后将某种计数器变量重置为 0 并继续。
我坚持的是我应该如何将 char 位转换为实际位,以便可以正确地将其写入二进制文件。
【问题讨论】:
-
呃,我不明白。你的预期结果是什么?输入?输出?
-
@Darkman 我会为这个问题添加更多细节。我道歉
-
您需要一个具有类级别变量的类,该变量跟踪已累积的位并最终将结果字节刷新到文件
-
如果要将ASCII字符存储为5位,那意味着大写和小写是一样的吧?像这样
('A' - 0x60) & 0x1F==('a' - 0x60) & 0x1F。