gpt4 book ai didi

c# - 从二进制文件读取字符串,不同的编码

转载 作者:行者123 更新时间:2023-12-01 15:11:10 24 4
gpt4 key购买 nike

我正在尝试读取由 C# 程序创建的 Java (android) 二进制文件,但是我遇到了一个问题。 C# 默认使用 UTF-7 对二进制文件中的字符串进行编码,Java 使用 UTF-8。这当然意味着字符串没有正确加载。

我想知道如何将字符串读取为 UTF-7 而不是 UTF-8。我还注意到我的 float 也遇到了类似的问题。 C# 和 Java 处理它们的方式不同吗?如果是的话,我如何在 Java 中正确读取它。

编辑:我在 C# 程序中使用 BinaryWriter 类,在 java 中使用 DataInputStream 类。

最佳答案

除非另有说明,C# 使用 UTF-8 编码。

编辑此处的文档不正确。
查看源代码,BinaryWriter 使用以下代码将字符串长度写入 7 位编码整数:

    protected void Write7BitEncodedInt(int value) {
// Write out an int 7 bits at a time. The high bit of the byte,
// when on, tells reader to continue reading more bytes.
uint v = (uint) value; // support negative numbers
while (v >= 0x80) {
Write((byte) (v | 0x80));
v >>= 7;
}
Write((byte)v);
}

您需要将此代码移植到 Java 才能找出要读取的字节数。

关于c# - 从二进制文件读取字符串,不同的编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12342739/

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