2010-08-10 286 views
3

我創建了一個返回(二進制)文件的web服務。不幸的是,我不能使用byte [],所以我必須將字節數組轉換爲字符串。 我目前做的是以下(但不工作):將二進制文件轉換爲字符串,反之亦然

將文件轉換爲字符串:

byte[] arr = File.ReadAllBytes(fileName); 
System.Text.UnicodeEncoding enc = new System.Text.UnicodeEncoding(); 
string fileAsString = enc.GetString(arr); 

要檢查是否正常工作,我將其轉換回經:

System.Text.UnicodeEncoding enc = new System.Text.UnicodeEncoding(); 
byte[] file = enc.GetBytes(fileAsString); 

但最後,從字符串創建的原始字節數組和字節數組不相等。我必須使用另一種方法將文件讀取到字節數組嗎?

回答

8

使用Convert.ToBase64String將其轉換爲文本,然後Convert.FromBase64String再次轉換回來。

Encoding用於將文本轉換爲二進制表示,並將文本的二進制表示再次轉換爲文本。在這種情況下,你沒有文本的二進制表示 - 你只是有任意的二進制數據...所以Encoding是不合適的。即使您使用能夠「排序」的編碼來處理任何二進制數據(例如ISO拉丁文1),您會發現,當您獲得控制字符時,許多傳輸文本的方式都會失敗。

Base64 encoding將給你的文本只是ASCII,並且更容易處理。

+0

謝謝,只是應該的方式! – 2010-08-10 09:51:28

相關問題