原文 string和byte[]的转换 (C#)

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;         }

string和byte[]的转换 (C#)的更多相关文章

  1. 转 string和byte[]的转换 (C#)

    转 string和byte[]的转换 (C#)  string类型转成byte[]: byte[] byteArray = System.Text.Encoding.Default.GetBytes ...

  2. java中string与byte[]的转换

    1.string 转 byte[] byte[] midbytes=isoString.getBytes("UTF8"); //为UTF8编码 byte[] isoret = sr ...

  3. C# string和byte[]的转换

    转自 http://www.cnblogs.com/Mainz/archive/2008/04/09/String_Byte_Array_Convert_CSharp.html string类型转成b ...

  4. 转:Java中String与byte[]的转换

    原文地址:http://blog.csdn.net/llwan/article/details/7567906 String s = "fs123fdsa";//String变量 ...

  5. java String与Byte[]和String 与InputStream转换时注意编码问题。。。

    前一段日子,我在做rsa加密和通过http get方式获取验证码图片通过BitmapFactory创建bitmap 出现了一系列的问题. 通过一系列的调试,发现有些问题原来是在进行String 与By ...

  6. C#中string,char[],byte[]互相转换

    string 转换成 Char[] string ss = "我爱你,中国"; char[] cc = ss.ToCharArray(); Char[] 转换成string str ...

  7. Java中String和byte[]间的转换浅析

    Java语言中字符串类型和字节数组类型相互之间的转换经常发生,网上的分析及代码也比较多,本文将分析总结常规的byte[]和String间的转换以及十六进制String和byte[]间相互转换的原理及实 ...

  8. Java中String和byte[]间的 转换浅析

    Java语言中字符串类型和字节数组类型相互之间的转换经常发生,网上的分析及代码也比较多,本文将分析总结常规的byte[]和String间的转换以及十六进制String和byte[]间相互转换的原理及实 ...

  9. c++builder 字节 编码 转换大全 String TBytes byte

    System.SysUtils System::DynamicArray<System::WideChar> TCharArray System::TArray__1<System: ...

随机推荐

  1. Introduction to Guid ( globally unique identifier )

    什么是 GUID? 全球唯一标识符 (GUID) 是一个字母数字标识符,用于指示产品的唯一性安装. 在许多流行软件应用程序(例如 Web 浏览器和媒体播放器)中,都使用 GUID. GUID 的格式为 ...

  2. django-celery

    在settings.py里installed_apps里添加 djcelery 需安装django-celery 在settings末端添加 import djcelery djcelery.setu ...

  3. ubuntu 10.04 下 samba 服务的配置

    1. 安装 $ sudo apt-get install samba $ sudo apt-get install samba-common $ sudo apt-get install samb . ...

  4. perl学习(3) 列表

      列表或称为数组,和c语言中的数据类似,只是perl自己特殊的一些写法. 1.1.定义 一个列表或者数组可以包含数字,字符串,undef 值,或者任意不同类型的标量值的组合,但是这些元素的类型通常是 ...

  5. Hibernate级联操作和载入机制(二) cascade and fetch

    上一篇介绍了Hibernate持久化对象时候的级联操作.本篇介绍读取时候的级联操作. 还是用上一篇的样例.一份问卷有多个问题.可是每一个问题仅仅能属于一份问卷. 我们先看測试用例: @Test pub ...

  6. HDU 1862 EXCEL次序 (排序水问题)

    Problem Description Excel对能够记录一组由任意列排序指定.现在,请把你编译的代码类似特征.   Input 測试输入包括若干測试用例. 每一个測试用例的第1行包括两个整数 N ...

  7. 【Oracle】ORA-01722:无效数字(控制文件最后一个字段)

    原因: 每一行物理数据最后都存在一个换行符. 如果integer或者number类型的字段位于控制文件的最后,最后其实都会有CR/LF的换行符,在用sqlldr导入时会把换行符也算作那个数字的一部分, ...

  8. 在Mac上配置/使用Github

    文/天才晓波(简书作者)原文链接:http://www.jianshu.com/p/20eee155bbee著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 先简单介绍一下Git和Git ...

  9. ios 判断,qq,银行卡,手机号,邮编,生日,数字,字符串,护照, email

    http://blog.csdn.net/dyllove98/article/details/8635079 IdentifierValidator.h // //  IdentifierValida ...

  10. Week11(11月21日)

    Part I:提问 =========================== 1.如何编辑更新一条记录? Part II:案例学习 =========================== MusicSt ...