zoukankan      html  css  js  c++  java
  • Byte[]和BASE64之间的转换

    一、 BASE64编码

    把byte[]中的元素当做无符号八位整数转换成只含有64个基本字符的字符串,这些基本字符是:

    l 大写的A-Z

    l 小写的a-z

    l 数字0-9

    l '+' 和 '/'

    l 空白字符(包括空白、tab,换行)

    l ‘=’,为填充字符,结尾处可以填充0-2个填充字符

    这64个字符构成BASE64的字符集。

    image

    Base64是将原文按照每 3 个字节一组分开,这个 3 字节组中的每一组将被按照位分解成 4 个部分,每个部分 6 个位,在这 4 个部分的每个部分高位加上 2 个 0构成一个新的 4 字节组,新的字节组中,每个字节只有 6 位,能表示64个值。

    在原文在转换为BASE64编码时,试是以3个字节为一组转换成4字节一组的BASE64编码。如果原文不是三字节的倍数,可能多出一个字节和两个字节,分别会被转为2字节和3字节的BASE64编码,这时编码系统应该在形成的BASE64编码最后添加上填充符”=”,保证BASE64编码长度是4的倍数。所以在BASE64编码后添加的填充符”=”可能为0-2个。

    BASE64编

    Byte[]和BASE64之间的转换纯粹就是表现形式的一种转换,它们之间有直接的对应关系,不涉及到使用何种代码页的问题,BASE64表达的也是字节流。

    二、 Byte[]和BASE64之间的转换操作

    static void Main(string[] args)

    {

    string factString = "中华人民共和国";

    byte[] myByte;

    string Base64Str;

    //先把字符串按照utf-8的编码转换成byte[]

    Encoding myEncoding = Encoding.GetEncoding("utf-8");

    //myByte中获得这样的字节数组:228,184,173,229,141,142,228,186,186,230,176,145,229,133,177,229,146,140,229,155,189

    myByte = myEncoding.GetBytes(factString);

    //把byte[]转成base64编码,这个例子形成的base64编码为:"5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9"

    Base64Str = Convert.ToBase64String(myByte);

    //再从base64编码转成byte[],又恢复为字节数组:228,184,173,229,141,142,228,186,186,230,176,145,229,133,177,229,146,140,229,155,189

    myByte = Convert.FromBase64String(Base64Str);

    //用同一个Encoding对象把byte[]转成字符串:"中华人民共和国"

    factString = myEncoding.GetString(myByte);

    Console.WriteLine(factString);

    }

  • 相关阅读:
    Go---第七章:接口(小知识点笔记)
    Go---第六章:方法(小知识点笔记)
    Go---第五章:函数(小知识点笔记)
    解决paramiko获取远程脚本延时返回数据的问题
    python字典合并
    关于iperf的使用
    python安装MySQLdb:出错Microsoft Visual C++ 9.0 is required
    v2r
    Win10 HotCorner热角小程序
    去掉显卡桌面右键菜单
  • 原文地址:https://www.cnblogs.com/liulaocai2/p/4349692.html
Copyright © 2011-2022 走看看