我尝试编程一个简单的游戏(但我的问题不是那么游戏特定),所以我写了一点MapLoader
。目前,它只读取文件头并将其打印在屏幕上。
信息:
-
Signature
为byte
-
Version
为int
-
length
是long
-
name
是32字节长的String
而且,所有这些都是有符号的,因为Java中没有unsigned。
然而,我有一个功能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:
我的地图文件是这样的:
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
实现正确处理所有字符集问题。