gpt4 book ai didi

C# 等效于 Java 中的 ByteArrayOutputStream

转载 作者:搜寻专家 更新时间:2023-10-30 23:00:37 24 4
gpt4 key购买 nike

我有 java 代码作为

ByteArrayOutputStream baos = new ByteArrayOutputStream();
baos.write(tokenBytes);
baos.write(signedData);
byte[] finalout = baos.toByteArray();

其中 tokenBytes 和 signedData 是字节数组。在 c# 中我写成

 using (MemoryStream stream = new MemoryStream())
{
using (BinaryWriter writer = new BinaryWriter(stream))
{
writer.Write(tokenBytes);
writer.Write(signature);
}
finalBytesToSend = stream.ToArray();

}

其中 tokenBytes 、 signature 和 finaleBytesToSend 是字节数组。

是否正确?或者还有其他方法吗?

最佳答案

我假设您正在编写 Java-C# 序列化方案。我认为您可能需要注意 3 件事:

  1. Java 字节数组输出可能在末尾包含特殊的分隔符。
  2. 如果字节数组中的数据最初不是字节,则 Java 默认使用 Big-Endian 编码;而 C# 默认是 Little Endian 编码。
  3. 对于字符串,Java 使用 UTF-16 (Big Endian),而 C# UTF-16 默认是 Little Endian。

在我看来,如果要在 Java 和 C# 之间传输数据,最好在 Java 端使用 ByteBuffer,在 C# 端使用 MemoryStream/BinaryReader/BinaryWrite。在 C# 端正确设置 UTF-16 Big Endian,并为诸如 int/long/double 基元之类的东西编写自己的反序列化程序。这使它起作用。

关于C# 等效于 Java 中的 ByteArrayOutputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22062521/

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