gpt4 book ai didi

java - 无法正确读取 Milkshape 3D 二进制文件

转载 作者:行者123 更新时间:2023-11-30 07:19:56 26 4
gpt4 key购买 nike

我希望你能帮我解决这个问题:我正在尝试为 Java 编写一个 Milkshape3D 模型加载器。我找到了 Milkshape3D File Format Specification here然后我创建了如下代码,我仍然缺少一些类,但是这个问题现在来了;使用 DataInputStream 对象我应该能够通过我想要的任何数据类型读取文件,就像使用 readChar() 我应该能够读取文件头中的所有字符,应该是“MS3D000000”,但是当我使用readChar() 只得到“M”,它返回一个奇怪的符号,即使我跳过前 10 个字节来读取版本号,它返回的数字与 3 非常不同!!

我不知道该怎么做,你能解释一下我做错了什么吗?型号可查here

package milkshape3d_loader;

import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;

class ms3d_header_t {
char[] id; // always "MS3D000000"
int version; // 3
ms3d_header_t() {
id = new char[] {'M','S','3','D','0','0','0','0','0','0'};
version = 3;
}
}

public class Milkshape3D_Loader {

public static void main(String[] args) {

try {
File inFile = new File ("dy_joey.ms3d");
FileInputStream inStream = new FileInputStream (inFile);
DataInputStream input = new DataInputStream (inStream);

char id = input.readChar();
System.out.println (id);

}

catch (Exception e) {
System.out.println (e.getMessage());
e.printStackTrace();
}
}
}

最佳答案

readChar 读取两个字节并将它们解释为单个 char - 一个 16 位 UTF-16 代码单元。 “奇怪的符号”大概是 U+4D53,即由对应于 ASCII M 和 S 的字节表示的 Unicode 字符。您可能需要使用

单独读取每个字节
char id = (char)input.readUnsignedByte();

关于java - 无法正确读取 Milkshape 3D 二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14326004/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com