zoukankan      html  css  js  c++  java
  • C#字节数组转换成字符串

    C#字节数组转换成字符串

    如果还想从 System.String 类中找到方法进行字符串和字节数组之间的转换,恐怕你会失望了。为了进行这样的转换,我们不得不借助另一个类:System.Text.Encoding。该类提供了 bye[] GetBytes(string) 方法将字符串转换成字节数组,还提供了 string GetString(byte[]) 方法将C#字节数组转换成字符串。

    System.Text.Encoding 类似乎没有可用的构造函数,但我们可以找到几个默认的 Encoding,即 Encoding.Default(获取系统的当前 ANSI 代码页的编码)、Encoding.ASCII(获取 7 位 ASCII 字符集的编码)、Encoding.Unicode(获取采用 Little-Endian 字节顺序的 Unicode 格式的编码)、Encoding.UTF7(获取 UTF-7 格式的编码)、Encoding.UTF8(获取 UTF-8 格式的编码) 等。这里主要说说 Encoding.Default 和 Encoding.Unicode 用于转换的区别。

    在字符串转换到字节数组的过程中,Encoding.Default 会将每个单字节字符,如半角英文,而把每个双字节字符,如汉字。而 Encoding.Unicode 则会将它们都转换成两个字节。我们可以通过下列简单的了解一下转换的方法,以及使用 Encoding.Default 和 Encodeing.Unicode 的区别:

    1. private void TestStringBytes() {  
    2. string s = "C#语言";  
    3. byte[] b1 = System.Text.Encoding.Default.GetBytes(s);  
    4. byte[] b2 = System.Text.Encoding.Unicode.GetBytes(s);  
    5. string t1 = ""t2 = "";  
    6. foreach (byte b in b1) {  
    7. t1 += b.ToString("") + " ";  
    8. }  
    9. foreach (byte b in b2) {  
    10. t2 += b.ToString("") + " ";  
    11. }  
    12. this.textBox1.Text = "";  
    13. this.textBox1.AppendText("b1.Length = " + b1.Length + "\n");  
    14. this.textBox1.AppendText(t1 + "\n");  
    15. this.textBox1.AppendText("b2.Length = " + b2.Length + "\n");  
    16. this.textBox1.AppendText(t2 + "\n");  

    运行结果如下,不说详述,相信大家已经明白了。

    1. b1.Length = 6 
    2. 67 35 211 239 209 212  
    3. b2.Length = 8 
    4. 67 0 35 0 237 139 0 138  

    将C#字节数组转换成字符串,使用 Encoding 类的 string GetString(byte[]) 或 string GetString(byte[], int, int) 方法,具体使用何种 Encoding 还是由编码决定。在 TestStringBytes() 函数中添加如下语句作为实例:

    1. byte[] bs = {97, 98, 99, 100, 101, 102};  
    2. string ss = System.Text.Encoding.ASCII.GetString(bs);  
    3. this.textBox1.AppendText("The string is: " + ss + "\n"); 

    运行结果为:The string is: abcdef

  • 相关阅读:
    How to change hostname on SLE
    How to install starDIct on suse OS?
    python logging usage
    How to reset password for unknow root
    How to use wget ?
    How to only capute sub-matched character by grep
    How to inspect who is caller of func and who is the class of instance
    How to use groovy script on jenkins
    Vim ide for shell development
    linux高性能服务器编程 (二) --IP协议详解
  • 原文地址:https://www.cnblogs.com/junjie94wan/p/2074160.html
Copyright © 2011-2022 走看看