我想了解以下内容:
如果我声明64字节作为数组长度(缓冲区).当我转换为基数为64的字符串时,它表示长度为88.长度不应该只有64,因为我传递的是64字节?我完全可能误解了这个实际的工作方式.如果是的话,请你解释一下.
//Generate a cryptographic random number
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
// Create byte array
byte[] buffer = new byte[64];
// Get random bytes
rng.GetBytes(buffer);
// This line gives me 88 as a result.
// Shouldn't it give me 64 as declared above?
throw new Exception(Convert.ToBase64String(buffer).Length.ToString());
// Return a Base64 string representation of the random number
return Convert.ToBase64String(buffer);
Run Code Online (Sandbox Code Playgroud)
不,base-64编码使用整个字节来表示被编码的数据的六位.丢失的两位是仅使用字母数字,加号和斜杠作为符号的价格(基本上,不包括代表不可见的数字或纯ASCII/UTF-8编码中的特殊字符).得到的结果是(64*4/3)四舍五入到最接近的4字节边界.
| 归档时间: |
|
| 查看次数: |
1931 次 |
| 最近记录: |