gpt4 book ai didi

java - 无法正确转换二进制文件

转载 作者:行者123 更新时间:2023-12-02 11:10:48 25 4
gpt4 key购买 nike

我必须读取一个名为 test.p2b 的文件,其中包含以下内容: enter image description here

我尝试这样阅读:

static void branjeIzDatoteke(String location){
byte[] allBytes = new byte[10000];
try {
InputStream input = new FileInputStream(location);
int byteRead;
int j=0;
while ((byteRead = input.read())!=-1){
allBytes[j] = (byte)input.read();
}
String str = new String(allBytes,"UTF-8");

for (int i=0;i<=str.length()-8;i+=8){
//int charCode = Integer.parseInt(str.substring(i,i+8),2);
//System.out.println((char)charCode);

int drek = (int)str.charAt(i);
System.out.println(Integer.toBinaryString(drek));
}
} catch (IOException ex) {
Logger.getLogger(Slika.class.getName()).log(Level.SEVERE, null, ex);
}

}

我尝试只打印出字符串(当我创建 String str = new String(allBytes,"UTF-8"); 时),但我得到的只是开头的一个正方形,然后是 70 多个没有文本的空白行。然后我尝试了 int charCode = Integer.parseInt(str.substring(i,i+8),2);并打印出每个单独的字符,但随后我得到了 NumberFormatException。我什至尝试过转换最后我尝试了最后的 Integer.toBinaryString 但在这种情况下我得到 1 和 0。这不是我想要的,我需要阅读实际的文本,但似乎没有方法有效。在使用我已经尝试过的方法之前,我实际上已经读取了一个二进制文件:int charCode = Integer.parseInt(str.substring(i,i+8),2);System.out.println((char)charCode);但就像我说的,我得到了一个 NumberFormatException。我不明白为什么这些方法不起作用。

最佳答案

如果你想读取所有字节,你可以使用 java.nio.file.Files实用程序类:

Path path = Paths.get("test.p2b");
byte[] allBytes = Files.readAllBytes(path);
String str = new String(allBytes, "UTF-8");
System.out.print(str);

您对 str 内容的迭代可能不起作用。某些 UTF 字符表示为代理对,这是一种可以跨越多个 char 的代码点(如 here 所述)。由于您使用的是 UTF,因此您应该使用 String#codePoinst()方法来迭代代码点而不是字符。

关于java - 无法正确转换二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50639240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com