zoukankan      html  css  js  c++  java
  • Byte数组转换成string 的方法积累

    .net的加密算法,返回的都是byte[] 类型,在存贮起来让人非常头疼,最简单的方法就是把byte[]转换成string来存贮,当然如果数据量大的话,另当别论。

    所以我就把byte[]转换成string的方法做一个简单的积累与分析。目前有3种我觉得比较简单的方案来进行转化。

    1.Convert.ToBase64String与 Convert.FromBase64String

    此方法简单实用。转换成的string包含:26个英文字母的大小写、+、/、0~9的数字,总共64个字符。一般会在结尾出现“=”。分析其原因很简单。

    原理:用64个字符来描述6bit的二进制。

    方式:把byte数据连在一起,以6bit为单位进行分组,使用64个字符描述6bit数据,如果分组不足6bit,使用“=”补全。

    2.自己写代码,使用16进制字符0~9、A~F来描述数据。

    原理:使用16个字符来描述4bit的二进制。也就是说,一个byte要使用两个16进制字符来进行描述。

    方式:对每一byte的前半部分与后半部分分别用字符来描述。

    此方法需要自己手动进行书写,代码相当简单。可以Crtl+c Ctrl+v拿来就用。

     public static string ByteToString(byte[] bytes)
    {
    StringBuilder strBuilder = new StringBuilder();
    foreach (byte bt in bytes)
    {
    strBuilder.AppendFormat("{0:X2}", bt);
    }
    return strBuilder.ToString();
    }
    public static byte[] StringToByte(string str)
    {
    byte[] bytes = new byte[str.Length / 2];
    for (int i = 0; i < str.Length / 2; i++)
    {
    int btvalue = Convert.ToInt32(str.Substring(i * 2, 2), 16);
    bytes[i] = (byte)btvalue;
    }
    return bytes;
    }

    3.使用Encoding的编码自动转化Encoding.GetEncoding("编码格式").GetString()和   Encoding.GetEncoding("编码格式").GetBytes()

    原理:使用编辑规则强行转换。

    方式:使用编辑自身的编码方式进行转换,转换出来的byte数据或者是string会出现各种奇怪或者是不可见的字符,存贮起来非常不方便。


    总结:

    推荐使用第一种方法来进行string的转化,但如果对格式要求时,如自定义机器语言中,不允许出现“+”“/”这种字符时,考虑会用第二种方法。

    如果只是转换成byte数据或者是转换成string进行内存操作时,使用第三种方式是种不错的选择。


  • 相关阅读:
    Leetcode 92. Reverse Linked List II
    Leetcode 206. Reverse Linked List
    Leetcode 763. Partition Labels
    Leetcode 746. Min Cost Climbing Stairs
    Leetcode 759. Employee Free Time
    Leetcode 763. Partition Labels
    搭建数据仓库第09篇:物理建模
    Python进阶篇:Socket多线程
    Python进阶篇:文件系统的操作
    搭建数据仓库第08篇:逻辑建模–5–维度建模核心之一致性维度2
  • 原文地址:https://www.cnblogs.com/taofh/p/1786224.html
Copyright © 2011-2022 走看看