从二进制文件中读取字符串不会返回任何结果



我尝试编程一个简单的游戏(但我的问题不是那么游戏特定),所以我写了一点MapLoader。目前,它只读取文件头并将其打印在屏幕上。

信息:

  • Signaturebyte
  • Versionint
  • lengthlong
  • 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实现正确处理所有字符集问题。

最新更新