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;
            }
  • 相关阅读:
    MultipartFile(文件的上传)
    JSONObject.fromObject--JSON与对象的转换
    Map集合与转化
    java读取excel文件
    Java中的Arrays类使用详解
    Arrays 类的 binarySearch() 数组查询方法详解
    JDK8 特性详解
    关于Java堆、栈和常量池的详解
    深入java final关键字
    杯酒人生
  • 原文地址:https://www.cnblogs.com/noviceliu/p/2280472.html
Copyright © 2011-2022 走看看