我尝试编写一个简单的游戏(但我的问题不是游戏特定的)所以我写了一点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
答案 0 :(得分:0)
使用一个以字节数组作为参数的java.lang.String
构造函数,而不是自己编译。 String
实现可以正确处理所有字符集问题。