gpt4 book ai didi

java - 用 C 解码一个 java 序列化的 .dat 文件

转载 作者:行者123 更新时间:2023-12-04 05:54:44 24 4
gpt4 key购买 nike

是否可以在 中解码 java 序列化的 .dat 文件? C ?

我在java项目中有一个文件,我在java项目中阅读如下:

FileInputStream in = new FileInputStream(.dat file path);
ObjectInputStream si = new ObjectInputStream(in);
si.readUTF();

si.readBoolean()
int num=si.readInt();

如何将此代码转换为 C ?我知道第一个字符是 utf 字符,第二个是 boolean 值,第三个是 int。
unsigned char buf[16];
FILE *fp = fopen((const char*)[filePath UTF8String], "rb");
fread(buf, 4, 1, fp); // read 4 bytes
printf("%s", buf);

最佳答案

The official Javadocs for the DataInput interface确切地说明什么 readUTF , readBoolean , 和 readInt从流中读取。只需在 C 中实现那些,完全按照描述,你会没事的。

我看到你在使用 Objective-C;为 readUTF特别是,您可以在使用 [[NSString alloc] initWithBytes:byteArray length:length encoding:NSUTF8StringEncoding] 读取适当数量的字节后构造 NSString。 .

顺便说一句,你的 Java 代码是浪费的:它使用了 ObjectInputStream当它真的只需要一个 DataInputStream ,这要简单得多,并提供您正在使用的相同方法。 (这特别引起了我的注意,因为如果您一直在使用 ObjectInputStream 的预期功能,即读取序列化的 Java 对象,那么在 C 中编写解码将更加困难,因为格式要复杂得多并且专为由包含 Java 标准库的系统使用。)

关于java - 用 C 解码一个 java 序列化的 .dat 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9643703/

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