String与Byte[]类型的转换

转载 2013年12月02日 11:06:23
 string类型转成byte[]:

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

反过来,byte[]转成string:

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


其它编码方式的,如System.Text.UTF8Encoding,System.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;
        }

相关文章推荐

Java中的byte/char/String数据类型转换

前言:项目中遇到的实际问题,Android手机和硬件通过Socket通信,手机可能会对硬件批量设置定时任务,最多批量设置16个。但由于硬件接收大量报文后处理不过来,定时任务经常漏设,而且响应相对较慢,...

Char, String 和 Byte 等类型间的转换和编码

这篇文章的标题看似简单,那就先从简单的说起。众所周知: 1、char 是字符类型; 2、string 是字符串类型; 两者都是及其常用数据类型。虽然一字之差,但是有本质区别: ...

走进c#(类型转换的一个类Object对象转int String double byte[] Stream)

转自:http://www.cnblogs.com/dengw009/archive/2011/07/22/2114258.html using System; using System.Col...
  • dqvega
  • dqvega
  • 2012-04-25 15:34
  • 8551

Java中的byte[]/char[]/int/String数据类型转换

常用的编码方式有Unicode、ASCII、UTF-8、GB2312、ISO-8899-1等。采用不同的编码方式,同样的n位二进制“数字”组合代表的“字符”也会不一样。具体采用什么样的编码方式,对“字...

Java7版本: switch语句支持String、Enum类型(JDK1.5)与原来byte、short、char和int.

在Java7之前,switch只能支持 byte、short、char、int或者其对应的封装类以及Enum类型。在Java7中,呼吁很久的String支持也终于被加上了。   例如,下面...

Java中String类型和Byte类型的互换问题

在进行Android的客户端和服务端的接口开发的过程中,笔者遇到这样的问题,因为采用的是流InputStream和OutputStream的操作,其中的参数都为byte型,在进行协议设计的时候,不可避...

String 与byte[] 间的转换

  • 2014-08-29 09:29
  • 14KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)