C# 理解ToBase64String
我无法理解这种转换背后的数学原理 base64字符串编码表:这是从基256到基64的一种特殊情况 要在纸上计算,首先要把数字转换成十进制。在这里,我将两者都转换为:C# 理解ToBase64String,c#,C#,我无法理解这种转换背后的数学原理 base64字符串编码表:这是从基256到基64的一种特殊情况 要在纸上计算,首先要把数字转换成十进制。在这里,我将两者都转换为: string name = "cem" byte[] barr = "cem".ToCharArray().Select(p=>Convert.ToByte(p)).ToArray(); string converted = Convert.ToBase64String(barr); // converted will be
string name = "cem"
byte[] barr = "cem".ToCharArray().Select(p=>Convert.ToByte(p)).ToArray();
string converted = Convert.ToBase64String(barr); // converted will be Y2Vt
c e m
99 101 109
Y 2 V t
24 54 21 45
好的,这也意味着它们确实是相同的数字
然后,要将十进制数转换为另一个基数(例如,转换为基数64),请找到小于或等于十进制数(即6514029)的最大64次方。该功率为64³=262144。进行整数除法6514029/262144得到
c e m
99 * 256² 101 * 256¹ 109 * 256°
6488064 25856 109 => sum = 6514029
y 2 v t
24 * 64³ 54 * 64² 21 * 64¹ 45 * 64°
6291456 221184 1344 45 => sum = 6514029
这意味着base64数字的第一位数字将是第25位(我们从0开始计数),这实际上是y
以余数作为当前十进制数继续此过程将生成其余数字。通过此过程,您可以将任何基数中的数字转换为任何其他基数。这是从基数256到基数64的一种特殊情况
要在纸上计算,首先要把数字转换成十进制。在这里,我将两者都转换为:
string name = "cem"
byte[] barr = "cem".ToCharArray().Select(p=>Convert.ToByte(p)).ToArray();
string converted = Convert.ToBase64String(barr); // converted will be Y2Vt
c e m
99 101 109
Y 2 V t
24 54 21 45
好的,这也意味着它们确实是相同的数字
然后,要将十进制数转换为另一个基数(例如,转换为基数64),请找到小于或等于十进制数(即6514029)的最大64次方。该功率为64³=262144。进行整数除法6514029/262144得到
c e m
99 * 256² 101 * 256¹ 109 * 256°
6488064 25856 109 => sum = 6514029
y 2 v t
24 * 64³ 54 * 64² 21 * 64¹ 45 * 64°
6291456 221184 1344 45 => sum = 6514029
这意味着base64数字的第一位数字将是第25位(我们从0开始计数),这实际上是y
以余数作为当前十进制数继续此过程将生成其余数字。通过此过程,您可以将任意基数中的数字转换为任意其他基数。上的表格对此进行了非常清楚的解释
每3个字节包含3 x 8=24位
这24位在Base64编码中编码为4个ASCII字符。这意味着每个ASCII字符携带6位数据
2^6是64,因此可以使用该表将每个6位映射为ASCII字符。
上面的表格解释得很清楚
每3个字节包含3 x 8=24位
这24位在Base64编码中编码为4个ASCII字符。这意味着每个ASCII字符携带6位数据
2^6是64,因此可以使用该表将每个6位映射为ASCII字符。