Code Bye

C#的base64编码

C#的base 64编码方法本人在百度上查了下,是用如下方式
string value = System.Convert.ToBase64String(m_ArchiveData.ToArray(),
0,
m_ArchiveData.Count,
Base64FormattingOptions.None
);
问题是,我们项目里面的接口是需要把转码后的数据作为byte[]传进去
所以本人又不得不把这个sStr转成byte[]
Byte[] bytes = System.Text.Encoding.UTF8.GetBytes(value);
这样的性能损失是比较大的,有没有什么函数可以直接把byte[]转成base64的byte[]的呢?
顺便想问下base64编码到底是干嘛用的,假如用socket传数据的话,直接传个二进制码流过去
不就完了嘛
解决方案

5

总之就是你要显示汉字,就不要用base64
你要使用socket,直接传byte[]好了
你需要把byte[]变成字符串存放,然后还要再转回byte[],这时就需要用到base64

5

这是你们通信协议设计的问题了
假如设计的不合理,导致必须来回转,那你也只能来回转,还有什么办法
好比本人用C#做个dll,非要返回datatable类型,这东西c++能调用才怪,就只能再做另一个dll去转了

10

Base64 是为了 简化 字节流变相传输。
例如:WebService,服务端方法 返回一个 byte[]
理论上,最后的 XML 应该是:
<byte>12</byte>
<byte>14</byte>
<byte>02</byte>
<byte>36</byte>
<byte>85</byte>
但实际是,最后的 结果确实:
<bytes>
qwertyuioasnudy12t37812348912u47
</bytes>
—— 用Base64 极大了 缩短了 需要传输 的 字节流。
————————————————————————————————
我们常说:
2进制:    01
16进制 : 12345679890ABCDEF
Base64就是: 64进制;
进制越低,相同的数据,最后的结果 位数 越长
Base64 是将 A-Z,a-z,0-9 外加几个 特殊符号 组成(是能组成的 最大进制)
————————————————————————————————
LZ 不服气了:汉字有 3000 个,那就是 3000 进制?!  —— 会更加简短。
本人在 这里回答:LZ,你是对的 —— 但一个汉字 就有 2个字节(256*256),实际算下来,Base汉字  字符很短,但字节流却不短!
————————————————————————————————

10

自定义的计算,你可以参考 http://188.93.174.57/#newwindow=1&q=%22ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789%2B%2F%22
你不需要得到 unicode 字符串,只需要 char[]/byte[] 形式的表示,就需要本人写一个。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C#的base64编码