2014-07-14 46 views
1

我有一個代碼處理FromBase64String如下:變量大於字節大小,爲什麼?

string hashValue = "4Nhuu2LRLntxkUs8Nb0DzL84GRgi5AWhsf+fhfiy6BwTNiM9UUZSdFfWhkCond9hkBBZOA=="; 
// trying to convert the above string in to bytes. 
byte[] toBytes = Convert.FromBase64String(hashValue); 

現在,在本地窗口toBytes呈現出以下值。

toBytes {byte[52]} byte[] 
[0] 224 byte 
[1] 216 byte 
[2] 110 byte 
[3] 187 byte 
[4] 98 byte 
[5] 209 byte 
[6] 46 byte 
[7] 123 byte 
[8] 113 byte 
[9] 145 byte 
[10] 75 byte 
[11] 60 byte 
[12] 53 byte 
[13] 189 byte 
[14] 3 byte 
[15] 204 byte 
[16] 191 byte 
[17] 56 byte 
[18] 25 byte 
[19] 24 byte 
[20] 34 byte 
[21] 228 byte 
[22] 5 byte 
[23] 161 byte 
[24] 177 byte 
[25] 255 byte 
[26] 159 byte 
[27] 133 byte 
[28] 248 byte 
[29] 178 byte 
[30] 232 byte 
[31] 28 byte 
[32] 19 byte 
[33] 54 byte 
[34] 35 byte 
[35] 61 byte 
[36] 81 byte 
[37] 70 byte 
[38] 82 byte 
[39] 116 byte 
[40] 87 byte 
[41] 214 byte 
[42] 134 byte 
[43] 64 byte 
[44] 168 byte 
[45] 157 byte 
[46] 223 byte 
[47] 97 byte 
[48] 144 byte 
[49] 16 byte 
[50] 89 byte 
[51] 56 byte 

我的問題是hashValue約72長字符串,當轉換爲toBytes,爲什麼它顯示尺寸52的?我已經通過許多來源處理這個問題,但仍然無法解決這個問題。任何幫助,在此表示讚賞。

回答

2

因爲在Base64中,每4個編碼字符代表3個字節(技術上,3個八位字節)。

4

它們都是不同的東西。

當您將字節數組轉換爲其base64表示形式時,您實際做的是對二進制值進行文本編碼,在本例中爲byte []。

你在問題中比較的是base64表示的字符串的長度與源字節數組的長度,這與編碼值完全不同。

相關問題