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个。但由于硬件接收大量报文后处理不过来,定时任务经常漏设,而且响应相对较慢,...
  • Elsa_Rong
  • Elsa_Rong
  • 2015年08月24日 20:20
  • 4386

InetAddress与String类型的转换,byte[]型与String型转换,编码解码

1、InetAddress与String类型的转换先定义变量:InetAddress addr;String ip;InetAddress型转换为String型:ip=addr.toString();...
  • zhaopeipei1985
  • zhaopeipei1985
  • 2008年04月07日 20:10
  • 3512

string与byte[]之间的转换

在使用.NET加密类的时候,会经常用到string与byte[]之间的转换。首先引用System.Text命名空间,然后UnicodeEncoding unicode=new UnicodeEncod...
  • dcsoft
  • dcsoft
  • 2006年08月21日 20:58
  • 1093

String.getBytes() 与编码格式

在Java中,String的getBytes()方法是得到一个操作系统默认的编码格式的字节数组。这个表示在不通OS下,返回的东西不一样! String.getBytes(String d...
  • u013634928
  • u013634928
  • 2015年09月22日 00:07
  • 2764

Byte类型与各种基础类型之间的相互转化函数总结

这几天在做一个通讯协议,需要byte类型与各种类型之间相互转化,为了便于以后用到的时候查看,特此记录。 import java.io.ByteArrayOutputStream; import...
  • qq_31490071
  • qq_31490071
  • 2016年05月26日 11:04
  • 4332

java byte 与 binary 转换

在写通讯程序时,有时需要解析二进制数据流,可能会遇到java数值类型与二进制byte数组的类型转换问题。因此,笔者提供下面代码实例,供大家需要时参考。 import java.io.*; /** *...
  • PZ0605
  • PZ0605
  • 2015年05月10日 10:45
  • 2766

【数据处理】关于string与byte转换之间 数据丢失的问题

转载地址:http://blog.csdn.net/xiongyucai/article/details/2472662 最近在项目中遇到一个问题:         程序中用到了MD5加密和IDE...
  • u010743187
  • u010743187
  • 2014年03月23日 13:39
  • 1046

Java之——基本数据类型与byte数组相互转化

我们直接上代码 package cn.com.eteamsun.utils; import java.nio.charset.Charset; /** * Java基本数据类型和byte数组相互...
  • l1028386804
  • l1028386804
  • 2016年12月22日 22:19
  • 1561

bit,byte,char,string区别与基本类型认识

bit(位):一个位就代表一个0或1(即二进制)
  • aojiancc2
  • aojiancc2
  • 2014年09月22日 17:45
  • 2594

基本数据类型、包装类、String类型之间的相互转换

@Test public void test2(){ //基本数据类型、包装类-->到String类型的转换,调用String类型的静态方法valueOf()即可 int i1 = 12; Strin...
  • XF777
  • XF777
  • 2017年05月22日 17:21
  • 354
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:String与Byte[]类型的转换
举报原因:
原因补充:

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