变量大于字节大小,为什么?

时间:2014-07-14 01:47:03

标签: c#

我有一个处理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 个答案:

答案 0 :(得分:4)

它们都是不同的东西。

当你将一个字节数组转换为它的base64表示时,你实际在做的是对二进制值进行文本编码,在本例中是一个byte []。

您在问题中所比较的是base64表示的字符串长度与源字节数组的长度,这与编码值完全不同。

答案 1 :(得分:2)

因为在Base64中,每4个编码字符代表3个字节(技术上,3个八位字节)。