当我传入64个字节时,为什么C#Convert.ToBase64String()给我88作为长度?

前端之家收集整理的这篇文章主要介绍了当我传入64个字节时,为什么C#Convert.ToBase64String()给我88作为长度?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想了解以下内容

如果我声明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);

解决方法

不,base-64编码使用整个字节来表示被编码的数据的六位.丢失的两位是仅使用字母数字,加号和斜杠作为符号的价格(基本上,不包括代表不可见的数字或纯ASCII / UTF-8编码中的特殊字符).得到的结果是(64 * 4/3)四舍五入到最接近的4字节边界.
原文链接:https://www.f2er.com/c/116664.html

猜你在找的C&C++相关文章