我有以下代码。当我检查变量 i 的值时,它是 16 个字节,但是当输出转换为 Base64 时,它是 24 个字节。
byte[] bytOut = ms.GetBuffer();
int i = 0;
for (i = 0; i < bytOut.Length; i++)
if (bytOut[i] == 0)
break;
// convert into Base64 so that the result can be used in xml
return System.Convert.ToBase64String(bytOut, 0, i);
Run Code Online (Sandbox Code Playgroud)
这是预期的吗?我正在尝试减少存储,这是我的问题之一。
小智 5
Base64 使用 64 个人类可读的字符(64 个字符 = 6 位信息)表示由 8 位字节组成的输入字符串。
问题答案的关键是编码以 24 位块工作,因此每 24 位或其中的一小部分会产生 4 个字符的输出。
16 字节 * 8 位 = 128 位信息
128 位 / 每块 24 位 = 5.333 块
所以最终输出将是 6 个块或 24 个字符。
小数块用等号处理,表示尾随的“空位”。在您的情况下,输出将始终以“==”结尾。
| 归档时间: |
|
| 查看次数: |
9841 次 |
| 最近记录: |