• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

c# – 相当于Java中ByteArrayOutputStream的C#

c/c++ 6次浏览

我有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#序列化方案。我认为您可能需要注意以下三点:

  • Java字节数组输出的末尾可能包含特殊的分隔符。
  • 如果字节数组中的数据最初不只是字节,则默认情况下使用Big-Endian编码的Java。而C#默认为Little Endian编码。
  • 对于字符串,Java使用的是UTF-16(大端),默认情况下,C#UTF-16是Little Endian。
  • 我认为,如果要在Java和C#之间传输数据,最好在Java端仅使用ByteBuffer,在C#端仅使用MemoryStream / BinaryReader / BinaryWrite。在C#端正确设置UTF-16 Big Endian,并为int / long / double原语等内容编写自己的反序列化器。这样就可以了。


    版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
    喜欢 (0)