我正在尝试实现此代码http://en.wikipedia.org/wiki/Delta_encoding 在java虽然它不工作。如果我用C ++做它可以正常工作,所以我一直在试图解决这个问题,我没有一个错误的俱乐部。
例如:
如果我读了一个文件。
input.txt中
这是对复制文件的测试。
它应该将编码文本写入文件中,它还应该能够读取编码文本并在另一个文件上解码。
像这样:普通文字: 这是一个美好的世界。
编码文字: T¶☺ 一世 ⌠☼≈┤W°♥·°╩
解码文字: 这是一个美好的世界。 按任意键继续 。 。
我做错了什么?
public static void delta_encode(String filename) throws IOException{
FileInputStream reader = null;
FileOutputStream writer = null;
try{
reader = new FileInputStream (filename);
writer = new FileOutputStream ("encode.txt");
char last = 0;
int c;
while((c = reader.read()) != -1){
char current = (char)c;
writer.write(current - last);
last = current;
}
}finally{
if(reader != null)
reader.close();
if(writer != null)
writer.close();
}
}
public static void delta_decode(String filename) throws IOException{
FileInputStream reader = null;
FileOutputStream writer = null;
try{
reader = new FileInputStream (filename);
writer = new FileOutputStream ("decode.txt");
char last = 0;
int c;
while((c = reader.read()) != -1){
char current = (char)c;
writer.write(current + last);
last = current;
}
}finally{
if(reader != null)
reader.close();
if(writer != null)
writer.close();
}
}
答案 0 :(得分:0)
C和Java之间的一个核心差异是基元的编码。
您的错误是假设Java char
与C char
相同。它不是!
尝试使用byte
代替char
。