首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >了解ToBase64String

了解ToBase64String
EN

Stack Overflow用户
提问于 2011-09-17 11:06:55
回答 2查看 208关注 0票数 1
代码语言:javascript
运行
复制
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

我无法理解这个转换背后的数学原理。

base64字符串编码表:http://tipsforcdevelopers.blogspot.com/2009/05/difference-between-converttobase64strin.html

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-17 11:16:35

Wikipedia's page上的表格很清楚地解释了这一点。

每个3字节包含3×8= 24位。

这24位以Base64编码被编码成4个ASCII字符。这意味着每个ASCII字符携带6位数据。

2^6是64,因此可以使用该表将每个6位映射到一个ASCII字符。

票数 2
EN

Stack Overflow用户

发布于 2011-09-17 11:11:30

这是从256基数到64基数的base conversion的一个特殊情况。

要在纸上做数学计算,首先要将数字转换为十进制。下面我将两者都转换为:

代码语言:javascript
运行
复制
              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

好的,这也意味着它们确实是相同的数字。

然后,要从十进制转换为另一个基数(例如,到基数64),请找到小于或等于十进制数(即6514029)的64的最大幂。这个幂是64³= 262144。做整数除法6514029 / 262144给出

代码语言:javascript
运行
复制
6514029 / 262133 = 24, remainder = 6514029 - 262133 * 24 = 222573

这意味着base64数字的第一个数字将是第25位(我们从0开始计数),它实际上是y

继续将余数作为当前十进制数的过程将生成剩余的数字。通过此过程,您可以将任何基数中的数字转换为任何其他基数。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7452184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档