我有一个处理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?我已经经历了许多处理这个问题的消息来源,但仍无法解决这个问题。对此有任何帮助表示赞赏。
答案 0 :(得分:4)
它们都是不同的东西。
当你将一个字节数组转换为它的base64表示时,你实际在做的是对二进制值进行文本编码,在本例中是一个byte []。
您在问题中所比较的是base64表示的字符串长度与源字节数组的长度,这与编码值完全不同。
答案 1 :(得分:2)
因为在Base64中,每4个编码字符代表3个字节(技术上,3个八位字节)。