[英]Converting a string rappresentation of a file (byte array) back to a file in C#
正如在標題中我試圖將字符串的字符串rappresentation轉換回原始文件所在的字節。
我做了什么:
我有一個Web服務,它獲取整個文件並發送它:
answer.FileByte = File.ReadAllBytes(@"C:\QRY.txt");
在傳輸結果xml中進行序列化后,我就是這一行:
<a:FileByte>TVNIfGF8MjAxMzAxMDF8YQ1QSUR8YXxhfGF8YXxhfGF8YXwyMDEzMDEwMXxhfGF8YXxhfGF8YXxhfGF8YXxhfGF8YXxhDVBWMXxhfGF8YXxhfGF8YXxhfGF8YXxhfDIwMTMwMTAxfDIwMTMwMTAxfDB8MHxhDQo=</a:FileByte>
我試圖在另一個簡單的應用程序中使用此行將其轉換回來:
//filepath is the path of the file created
//bytearray is the string from the xml (copypasted)
File.WriteAllBytes(filepath, Encoding.UTF8.GetBytes(bytearray));
我已經使用UTF8作為enconding,因為xml聲明使用這個charset。 保持數據類型不是一個選項,因為我正在編寫一個簡單的實用程序來檢查文件轉換。
也許我錯過了一些非常基本的東西,但我無法想出一個有效的解決方案。
這當然不是UTF8,序列化器可能將其轉換為Base64。
使用Convert.FromBase64String()
來獲取字節
假設bytearray是"TVNIfGF8M..."
字符串,請嘗試:
string bytearray = ...;
File.WriteAllBytes(filepath, Convert.FromBase64String(bytearray));
UTF8是一種將任意文本轉換為字節的方法。
ReadAllText()
使用ReadAllText()
磁盤上的字節轉換回XML。
您將看到一種機制,可將任意字節轉換為適合XML的文本。 (然后使用UTF8將該文本轉換為不同的字節)。
它可能是Base64; 使用Convert.FromBase64String()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.