【发布时间】:2014-06-07 15:13:26
【问题描述】:
我尝试编写一个简单的游戏(但我的问题不是那么具体)所以我写了一点MapLoader。目前它只读取文件头并将其打印在屏幕上。
信息:
-
Signature是byte -
Version是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:
我的地图文件如下所示:
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
【问题讨论】:
-
什么是
Debugger?如果是你自己的类,请告诉我们debug方法。 -
调试器只是 System.out.println() 的封装。如果调试是否启用,它只是添加一个布尔存储。
-
如果使用正确的索引和
Arrays.copyOfRange("byte+int+long = "1+4+8 =13 != 11) 是否有效?
标签: java string binary binaryfiles