gpt4 book ai didi

java - 在 Python 中创建 Java DataInputStream 数据

转载 作者:太空宇宙 更新时间:2023-11-04 11:01:37 25 4
gpt4 key购买 nike

我有一个 Java 程序,它使用 DataInputStream 来存储对象数据。

例子:

  DataInputStream tInput = new DataInputStream(getClass().getResourceAsStream(aDirectory + "/ResultItemInfo.dat"));

this._text = tInput.readUTF();

this._image = tInput.readUTF();

this._audio = tInput.readUTF();

this._random = false;
if (tInput.read() == 1) {
this._random = true;
}

this._hasMenu = false;
if (tInput.read() == 1) {
this._hasMenu = true;
}

很好,不是吗?

有一个现有的数据集,现在我必须添加一些记录。如果我需要制作的工具也是用 Java 编写的,这将非常容易。不幸的是,它是用 Python 编写的,所以我必须找到一种方法来创建可以使用 Python 从 Java 应用程序读取的文件。

有什么简单的方法可以做到这一点吗?

作为最后的手段,我可​​以:

  • 修改 Java 应用程序并使用 XML。这会破坏与所有现有数据的兼容性,所以我真的不想这样做。
  • 使用 Jython。可能的解决方案,但我想要纯 C-Python。
  • 对数据格式进行逆向工程。也不是一个好的解决方案。

最佳答案

对于一个可读 UTF 的字符串,它必须包含两个字节的计数器,然后是与计数器所说的一样多的 UTF-8 编码数据字节。

所以我建议这段代码应该按照 readUTF() 可以读取的方式编写一个 unicode 字符串 data:

encoded = data.encode('UTF-8')
count = len(encoded)
msb, lsb = divmod(count, 256) # split to two bytes
outfile.write(chr(msb))
outfile.write(chr(lsb))
outfile.write(encoded)

outfile 必须以二进制模式打开(例如“wb”)。这是根据 Java 接口(interface) DataInput 的描述。不过,我没有尝试运行它。

关于java - 在 Python 中创建 Java DataInputStream 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4788052/

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