我尝试编写一个简单的游戏(但我的问题不是特定于游戏的),所以我写了一些MapLoader
。目前它只读取文件头并将其打印在屏幕上。
信息:
签名
是一个字节
版本
是一个int
length
是一个long
name
是一个 32 字节长的String
此外,所有这些都是有符号的,因为 Java 中没有无符号的。
但是我有一个函数toString(byte[] array)
。它的实现是这样的:
private String toString(byte[] array) {
char[] buffer = new char[array.length];
StringBuilder builder = new StringBuilder(array.length);
for(int i = 0; i < array.length; i++) {
buffer[i] = (char) array[i];
builder.append(buffer[i]);
}
return builder.toString();
}
我传入data[]
的子数组(保存所有数据)
header.name = toString(Arrays.copyOfRange(data, 11, 32));
但是在做的时候
Debugger.debug("Signatur: " + header.signature);
Debugger.debug("Version: " + header.version);
Debugger.debug("Länge: " + header.length);
Debugger.debug("Name: " + header.name);
我只得到:
Signatur: 86
Version: 1
Länge: 14
Name:
我的 map 文件如下所示:
56 00 00 00 01 00 00 00 00 00 00 00 0E 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 0A
最佳答案
使用将字节数组作为参数的 java.lang.String
构造函数之一,而不是滚动自己的构造函数。 String
实现正确处理所有字符集问题。
关于java - 从二进制文件中读取字符串不会返回任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24098617/