C# byte数组转字符串、获取定义及Base64编码

Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式。 如果剩下的字符不足3个字节,则用0填充,输出字符使用'=',因此编码后输出的文本末尾可能会出现1或2个'='。为了保证所输出的编码位可读字符,Base64制定了一个编码表,以便进行统一转换。编码表的大小为2^6=64,这也是Base64名称的由来。

Base64编码表:

码值字符   码值字符   码值字符   码值字符
0 A 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
2 C 18 S 34 i 50 y
3 D 19 T 35 j 51 z
4 E 20 U 36 k 52 0
5 F 21 V 37 l 53 1
6 G 22 W 38 m 54 2
7 H 23 X 39 n 55 3
8 I 24 Y 40 o 56 4
9 J 25 Z 41 p 57 5
10 K 26 a 42 q 58 6
11 L 27 b 43 r 59 7
12 M 28 c 44 s 60 8
13 N 29 d 45 t 61 9
14 O 30 e 46 u 62 +
15 P 31 f 47 v 63 /

 


 
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { textBox1.Text = "X2009中国"; } private void textBox1_TextChanged(object sender, EventArgs e) { byte[] bs = Encoding.UTF8.GetBytes(textBox1.Text); textBox2.Text = BitConverter.ToString(bs); string result = "{"; foreach (byte b in bs) result += "0x" + b.ToString("x2") + ","; result = result.TrimEnd(',') + "}"; textBox3.Text = result; textBox4.Text = Convert.ToBase64String(bs); } }

 

2017/12/18 补充:对编码后的字符串编码,转换为Base64字符,重复这一过程将导致转换后的字符串长度增加

        static void Main(string[] args)
        {
            string str = "X2009中国";

            for (int i = 0; i < 5; i++)
            {
                str = Convert.ToBase64String(Encoding.UTF8.GetBytes(str));
                Console.WriteLine(str);
            }

            Console.ReadLine();
        }

运行结果:

WDIwMDnkuK3lm70=
V0RJd01Ebmt1SzNsbTcwPQ==
VjBSSmQwMUVibXQxU3pOc2JUY3dQUT09
VmpCU1NtUXdNVVZpYlhReFUzcE9jMkpVWTNkUVVUMDk=
Vm1wQ1UxTnRVWGROVlZacFlsaFJlRlV6Y0U5ak1rcFZXVE5rVVZWVU1Eaz0=

 

posted @ 2017-12-17 14:20  X2009  阅读(1179)  评论(0编辑  收藏  举报