2012-01-06 28 views
0

我有如下的方法:如何確保一個字節數組由Base64編碼?

public void AddAttachment(byte[] attachment) 
{ 
// how to make sure that the attachemnt is encoded by Base64? 
} 

如何確保AddAttachment方法接受被編碼使用Base64字節數組?

例如下面的是被髮送到該方法前的有效輸入:

string attachmentInString = "Hello test"; 
byte[] attachmentInBytes = System.Convert.FromBase64String(attachmentInString); 

但如果attachmentInBytes使用ASCII或等編碼時,AddAttachement方法應拋出異常。

如何實現這一目標?

謝謝,

+0

這個問題很不清楚。爲什麼使用'DecodeFrom64'如果你想編碼一些東西?請詳細說明你正在努力達到的目標。 – Oded 2012-01-06 10:32:14

+0

如果您閱讀它,問題中的標題非常清晰。如何確保AddAttachment方法接受用Base64編碼的字節數組?我也更新了身體。 – 2012-01-06 10:35:13

+0

重複這個問題並沒有使它更清晰。你想在這裏做什麼?究竟? – Oded 2012-01-06 10:36:25

回答

0

Base64是表示字節作爲一個字符串的流的方法。如果你想附件是那麼一個base64字符串的簽名更改爲public void AddAttachment(string attachment)

然後使用byte[] data = Convert.FromBase64String(attachment)

如果你想編碼附着到的base64解碼的Base64:

public void AddAttachment(byte[] attachment) { 
    string base64 = Convert.ToBase64String(attachment) 
    ... 
} 
+0

謝謝,但「字符串attchment」是不相關的。我需要在AddAttachment方法中進行驗證,以確保它接收到正確編碼的字節數組。清楚嗎? – 2012-01-06 10:47:00

+0

你的意思是byte []實際上是一個base64字符串嗎? – Bas 2012-01-06 10:48:04

+0

例如,在發送到此方法之前,這是有效的編碼字節:byte [] attachmentInBytes = System.Convert.FromBase64String(attachmentInString); – 2012-01-06 10:51:55

0

從你的問題我發現你誤解了一些東西,希望這有助於你。 Convert.FromBase64String接受一個字符串(總是像ALJWKA==)並輸出byte[],而Convert.ToBase64String則相反。所以你的代碼:

string attachmentInString = "Hello test"; 
byte[] attachmentInBytes = System.Convert.FromBase64String(attachmentInString); 

會拋出一個異常,因爲「Hello test」不是有效的base64字符串。看到別的方法

public void AddAttachment(byte[] attachment) 

參數是byte[],所以在這種方法中,你頂多將其轉換爲字符串像一個base64。您不能分辨byte[]是否是有效的base64字符串。你只能這樣做到一個字符串:

public void AddAttachment(string attachment) //well I know it looks strange 
{ 
    byte[] bytes = null; 
    try 
    { 
     bytes = Convert.FromBase64String(attachment); 
    } 
    catch 
    { 
     //invalid string format 
    } 
} 
相關問題