从二进制文件读取字符串不会返回任何内容

时间:2014-06-07 15:13:26

标签: java string binary binaryfiles

我尝试编写一个简单的游戏(但我的问题不是游戏特定的)所以我写了一点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     

1 个答案:

答案 0 :(得分:0)

使用一个以字节数组作为参数的java.lang.String构造函数,而不是自己编译。 String实现可以正确处理所有字符集问题。