无法将二进制转换为文本

时间:2018-03-29 08:00:06

标签: java

我必须将二进制数据转换为文本,我认为我很接近,但有些东西不能正常工作。在这种情况下,输出应该是字母“FRI”,但我得到一些围绕字母的其他符号: F2eÊ)R¤I$ I $ I。 我不知道这似乎是什么问题。这是代码:

public class DN06 {
public static void main(String[] args) throws FileNotFoundException, UnsupportedEncodingException {
    String location = "D:\\NetBeans\\Projects\\DN06\\src\\datoteka1.txt";
    File newFile = new File(location);
    Scanner sc = new Scanner(newFile);
    StringBuilder sb = new StringBuilder();
    String drek = "";
    try{
        while (sc.hasNext()){
            String content = new String(sc.next().getBytes(),"UTF-8");
            for (int i=0;i<=content.length()-8;i++){
                int charCode = Integer.parseInt(content.substring(i,i+8),2);
                drek += new Character((char)charCode).toString();
            }
            System.out.println(drek);
        }
    }catch( UnsupportedEncodingException e){
        System.out.println("Unsupported character set");
    }
}

}

1 个答案:

答案 0 :(得分:3)

在第

String content = new String(sc.next().getBytes(),"UTF-8");

您已经拥有所需的输出。在这里,您已经使用编码为UTF-8的字符串解析了字符串数组。之后你试图再次将它解码为UTF-8,因此你得到了错误的结果。

编辑:

由于您的文件内容是用二进制文件编写的,这是不够的,您必须解析每个字节一次。你的for循环中的问题是,你在二进制字符串中向右移动i总是只有一位而不是8位数。

for (int i=0;i<=content.length()-8;i = i+8)

这应该可以完成这项工作,这次是