Java 无法将二进制文件转换为文本
我必须将二进制数据转换成文本,我想我已经接近了,但有些东西工作不太正常。在本例中,输出应该是字母“FRI”,但我在字母周围有一堆其他符号: F2eÊ)R·I$I。 我不知道是什么问题。代码如下:Java 无法将二进制文件转换为文本,java,Java,我必须将二进制数据转换成文本,我想我已经接近了,但有些东西工作不太正常。在本例中,输出应该是字母“FRI”,但我在字母周围有一堆其他符号: F2eÊ)R·I$I。 我不知道是什么问题。代码如下: public class DN06 { public static void main(String[] args) throws FileNotFoundException, UnsupportedEncodingException { String location = "D:\\NetBe
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");
}
}
公共类DN06{
公共静态void main(字符串[]args)引发FileNotFoundException、UnsupportedEncodingException{
String location=“D:\\NetBeans\\Projects\\DN06\\src\\datoteka1.txt”;
文件newFile=新文件(位置);
扫描仪sc=新扫描仪(新文件);
StringBuilder sb=新的StringBuilder();
字符串drek=“”;
试一试{
while(sc.hasNext()){
字符串内容=新字符串(sc.next().getBytes(),“UTF-8”);
对于(int i=0;i在直线上
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)
for(int i=0;i新字符((char)charCode)
对我来说似乎可疑(此处未定义编码)。您能找到一种方法向我们显示您的输入文件吗?那会有帮助。可能会以十六进制格式转储它?尝试使用ByteArrayInputstream而不是基于文本的输入流。该文件的扩展名为.txt,文件内容为:01000110010100100100100100100100100100100100100110。如果我只是尝试打印此字符串,输出为:010001100101001我需要将这些数据转换成文本形式。@Sebastjan啊,我知道了,你的文件是用二进制写的,我想文件中写的是“FRI”,我会设法弄清楚的