如何将sbyte[]转换为base64字符串

本文关键字:转换 base64 字符串 sbyte | 更新日期: 2023-09-27 18:07:45

如何将sbyte[]转换为base64字符串?

我不能将sbyte[]转换为byte[],以保持与java的互操作性。

如何将sbyte[]转换为base64字符串

您绝对可以sbyte[]转换为byte[] -我可以向您保证Java代码将真正将字节数组视为无符号数组。(或者换一种说法:base64只是在unsigned bytes方面定义的…)

只需转换为byte[]并调用Convert.ToBase64String。转换为byte[]实际上非常容易——尽管c#本身不提供两者之间的转换,但CLR很乐意执行引用转换,因此您只需要欺骗c#编译器:

sbyte[] x = { -1, 1 };
byte[] y = (byte[]) (object) x;
Console.WriteLine(Convert.ToBase64String(y));

如果你想要一个正版 byte[],你可以复制:

byte[] y = new byte[x.Length];
Buffer.BlockCopy(x, 0, y, 0, y.Length);

但我个人还是坚持使用第一种形式

class Program
{
    static void Main()
    {
        sbyte[] signedByteArray = { -2, -1, 0, 1, 2 };
        byte[] unsignedByteArray = (byte[])(Array)signedByteArray; 
        Console.WriteLine(Convert.ToBase64String(unsignedByteArray));
    }
}