字符串与byte[]之间的转换

来源:互联网 发布:ims 的数据是什么 编辑:程序博客网 时间:2024/05/14 23:37

编码

同一个字符在不同的编码下会被编成不同长度的编码,

比如:ACSII,每个字符对应一个字节,实际上只使用了7位,从00h-7Fh。只能表达128个字符。

GB2312,中文的一种编码,每个字符使用两个字节表示。

UTF-8, 可以表达所有unicode字符,每个字符可以用1-3个字节表示。

UTF-16, 可以表达所有unicode字符,每个字符可以用1-2个16位整数表示。

UTF-32, 可以表达所有unicode字符,每个字符可以用1个32位整数表示。

 

 

(一)用ASCII码转换


(2) System.Text.Encoding.Default

    

(3)需要把string转换为byte[]使用的场景

任何需要把string序列化处理都需要这种转换,比如:

需要把string保存到文件中,必须把string转换成一个有序的字节流,以便系统在硬盘上做物理保存。

对string做加密操作时,加密算法是针对字节进行处理,这时也需要把string转换成字节流以便加密算法对数据进行处理。

String到字节流的转换涉及到使用何种编码,使用不同的编码得到的字节码不同,再从字节码做反操作恢复成string,必须使用编码时使用的编码或者兼容的编码,否则结果就是乱码。

///////////////////////////////////////////////////////////////////////////////////

 string转换为byte []的操作

1、 确定使用的编码

       使用Encoding类的静态方法GetEncoding方法获得某个类型的Encoding对象。

        public static Encoding.GetEncoding(int codepage)

       codepage指定这种返回代码页的Encoding

       public static Encoding GetEncoding (string name)

       name 指定这种返回代码名的Encoding

      其中使用到的代码页和代码名在上面表中。

       比如要获得一个utf-8的Encoding对象

       Encoding myEncoding = Encoding.GetEncoding("utf-8");

2、 从string到byte[]

     string sData = “字符串”;

     byte[] myByte = myEncoding.GetBytes(sData);
    <!--[if !supportLineBreakNewLine]-->
    <!--[endif]-->

    使用GetBytes方法时,不产生前面所说的识别不同UTF格式的前导符。

3、 从byte[]到string

    byte[] myByte = new byte[]{};

    string sData = myEncoding.GetString(byte[] myByte);

 

 

 http://topic.csdn.net/u/20090722/10/58a9b4b7-a63a-430e-8f25-509231a4ae24.html?seed=795684050&r=58608395#r_58608395