簡體   English   中英

如何將sbyte []轉換為base64字符串?

[英]How can I convert sbyte[] to base64 string?

如何將sbyte[]轉換為base64字符串?

我無法將sbyte[]轉換為byte[] ,以保持與java的互操作性。

你絕對可以sbyte[]轉換為byte[] - 我幾乎可以保證Java代碼真的將字節數組視為無符號。 (或者換句話說:base64只根據無符號字節定義 ......)

只需轉換為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));
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM