如何将sbyte[]转换为base64字符串
本文关键字:转换 base64 字符串 sbyte | 更新日期: 2023-09-27 18:07:45
如何将sbyte[]
转换为base64字符串?
我不能将sbyte[]
转换为byte[]
,以保持与java的互操作性。
您绝对可以将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));
}
}