簡體   English   中英

將byte []字符串轉換回byte []數組

[英]Converting a byte[] string back to byte[] array

我有一個這樣的類場景。

Class Document
{
    public string Name {get;set;}
    public byte[] Contents {get;set;}
}

現在,我正在嘗試實現導入導出功能,在該功能中,我將文檔保留為二進制格式,因此該文檔將與其他字段一起位於json文件中,並且該文檔將采用這種格式。

UEsDBBQABgAIAAAAIQCitGbRsgEAALEHAAATAAgCW0NvbnRlbnRfVHlwZXNdLnhtbCCiBAIooAACAAAAAAA==

現在,當我將該文件上傳回時,我將該文件作為字符串獲得,並且得到相同的數據,但是當我嘗試將其轉換為二進制字節[]時,該文件已損壞。

我該如何實現?

我用這樣的東西來轉換

var ss = sr.ReadToEnd();

 MemoryStream stream = new MemoryStream();
 StreamWriter writer = new StreamWriter(stream);

 writer.Write(ss);
 writer.Flush();
 stream.Position = 0;  

 var bytes = default(byte[]);

 bytes = stream.ToArray();

看起來像以64為底。使用:

System.Convert.ToBase64String(b)

https://msdn.microsoft.com/zh-CN/library/dhx0d524%28v=vs.110%29.aspx

System.Convert.FromBase64String(s)

https://msdn.microsoft.com/zh-cn/library/system.convert.frombase64string%28v=vs.110%29.aspx

您需要從base64對其進行解碼,如下所示:

假設您已將文件作為字符串讀取到ss中。

var bytes = Convert.FromBase64String(ss);

這里發生了幾件事。 您需要知道默認StreamWriter的編碼,如果未指定,則默認為UTF-8編碼。 但是,.NET字符串始終是UNICODEUTF-16

來自字符串的MemoryStream-關於使用編碼的困惑

我建議使用System.Convert.ToBase64String(someByteArray)及其對應的System.Convert.FromBase64String(someString)為您處理此問題。

暫無
暫無

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

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