我正在做一个类项目,即霍夫曼算法。读取文件并生成霍夫曼代码(1s & 0s)后,我必须使用按位运算将其导出到新文件。出于某种原因,当我使用按位运算导出时,文件最终会比以前更大。使用代表前面字符的 1 和 0 字符串,使用按位我必须将每个 1 和 0 保存在 8 位链中。这是我拥有的代码:
byte currentByte = 0;
for (int i = 0, j = 0; i < binaryString.length(); i++, j++) {
if (binaryString.charAt(i) == '1') {
currentByte |= (byte) Math.pow(2, 7 - j);
}
if (i != 0 && (i % 8 == 0 || i == binaryString.length() - 1)) {
output.writeObject(currentByte);
if (i % 8 == 0) {
currentByte = 0;
j = 0;
}
}
}
谢谢你。