zoukankan      html  css  js  c++  java
  • string和byte[]的转换

     string类型转成byte[]

    byte[] byteArray = System.Text.Encoding.Default.GetBytes ( str );

    反过来,byte[]转成string

    string str = System.Text.Encoding.Default.GetString ( byteArray );


    其它编码方式的,如System.Text.UTF8EncodingSystem.Text.UnicodeEncoding class等;例如:

    string类型转成ASCII byte[]:("01" 转成 byte[] = new byte[]{ 0x30, 0x31}

    byte[] byteArray = System.Text.Encoding.ASCII.GetBytes ( str );

    ASCII byte[] 转成string:(byte[] = new byte[]{ 0x30, 0x31} 转成 "01"

    string str = System.Text.Encoding.ASCII.GetString ( byteArray );

     

    有时候还有这样一些需求:

    byte[] 转成原16进制格式的string,例如0xae00cf, 转换成 "ae00cf"new byte[]{ 0x30, 0x31}转成"3031":

            public static string ToHexString ( byte[] bytes ) // 0xae00cf => "AE00CF "
            {
                
    string hexString = string.Empty;
                
    if ( bytes != null )
                
    {
                    StringBuilder strB 
    = new StringBuilder ();

                    
    for ( int i = 0; i < bytes.Length; i++ )
                    
    {
                        strB.Append ( bytes[i].ToString ( 
    "X2" ) );
                    }

                    hexString 
    = strB.ToString ();
                }

                
    return hexString;
            }


    反过来,16进制格式的string 转成byte[],例如, "ae00cf"转换成0xae00cf,长度缩减一半;"3031" 转成new byte[]{ 0x30, 0x31}:

            public static byte[] GetBytes(string hexString, out int discarded)
            
    {
                discarded 
    = 0;
                
    string newString = "";
                
    char c;
                
    // remove all none A-F, 0-9, characters
                for (int i=0; i<hexString.Length; i++)
                
    {
                    c 
    = hexString[i];
                    
    if (IsHexDigit(c))
                        newString 
    += c;
                    
    else
                        discarded
    ++;
                }

                
    // if odd number of characters, discard last character
                if (newString.Length % 2 != 0)
                
    {
                    discarded
    ++;
                    newString 
    = newString.Substring(0, newString.Length-1);
                }


                
    int byteLength = newString.Length / 2;
                
    byte[] bytes = new byte[byteLength];
                
    string hex;
                
    int j = 0;
                
    for (int i=0; i<bytes.Length; i++)
                
    {
                    hex 
    = new String(new Char[] {newString[j], newString[j+1]});
                    bytes[i] 
    = HexToByte(hex);
                    j 
    = j+2;
                }

                
    return bytes;
            }
  • 相关阅读:
    chapter2——习题
    chapter2 算法——程序的灵魂
    物理数据库设计 读书笔记
    从visio数据库脚本生成添加 MS_Description 的sql脚本
    SSIS包中CASE与NVARCHAR的恩怨
    又到年末
    delicious备份文件转入firefox书签,delicious2firefox 原创、开源
    软件架构设计 温昱著 读书笔记
    重构 读书笔记
    再遇SSIS包与MSSQL问题
  • 原文地址:https://www.cnblogs.com/noviceliu/p/2280472.html
Copyright © 2011-2022 走看看