24
我想:轉換和背部
- 生成的字節數組。
- 將該字節數組轉換爲base64
- 將該base64字符串轉換回字節數組。
我試過了一些解決方案,例如那些在這個question。
由於某些原因,初始字節數組和最終字節數組不匹配。這裏所使用的代碼:
using (RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider())
{
byte[] originalArray = new byte[32];
rng.GetBytes(key);
string temp_inBase64 = Convert.ToBase64String(originalArray);
byte[] temp_backToBytes = Encoding.UTF8.GetBytes(temp_inBase64);
}
我的問題是:
爲什麼 「originalArray」 和 「temp_backToBytes」 不匹配? (originalArray的長度爲32,temp_backToBytes的長度爲44,但它們的值也不同)
是否可以來回轉換,如果有,我該如何實現?
這工作,但如果只的base64使用6每8位的,我想編碼會更短? – crawfish 2012-07-24 15:47:53
@crawfish編碼在輸出中使用8位中的6位,使兩個最重要的位置零。結果,每個三字節組('3 * 8 = 24'位)變爲一組四字節('4 * 6 = 24'位)。如果原稿中的字節數不能被3整除,則會在末尾添加特殊標記。在你的情況下,可以被大於32的3整除的下一個數字是33或者「11 * 3」。這意味着結果是「11 * 4」或44個字節長。 – dasblinkenlight 2012-07-24 15:57:13
非常感謝您的解釋 – crawfish 2012-07-24 17:29:58