在C#语法中,字符串使用的是string类型,字节数组使用的是byte[],那么,这两者能不能互相转换,以及如何转换呢?

方法/步骤

  1. 打开visual studio,创建一个控制台应用程序,用于演示如何进行字节数组byte[]和字符串string的相互转换
  2. C#字节数组byte[]和字符串string如何互相转换_c#

  3. 在控制台应用程序的Main方法中,定义一个字符串string str = "这是字符串变量";
  4. C#字节数组byte[]和字符串string如何互相转换_c#_02

  5. 将字符串转换为字节数组,需要指定想要转成字节的字符集,因为,不同的字符集占用的字节数是不一样的。首先使用UTF-8的字符集,将字符串转换为字节数组。byte[] utf8 = Encoding.UTF8.GetBytes(str);
  6. C#字节数组byte[]和字符串string如何互相转换_字符串转换_03

  7. 接着,使用GB2312字符集,将同一个字符串转换为字节数组,使用代码:byte[] gb2312 = Encoding.GetEncoding("GB2312").GetBytes(str);
  8. C#字节数组byte[]和字符串string如何互相转换_c#_04

  9. 在控制台中,输出这两种字符集转换出的字节个数,看看是否相等呢?从运行结果可以看出,两种字符集转换出来的长度是不相等的。因为str目前的长度是7个字符,使用UTF-8转换出来的字节数组长度=7*3=21,使用GB2312转换出来的长度=7*2=14
  10. C#字节数组byte[]和字符串string如何互相转换_字符串转换_05

  11. 那么,字节数组如何才能转换为字符串呢?这个时候同样需要指定字符集类型。Encoding.UTF8.GetString(utf8), Encoding.GetEncoding("GB2312").GetString(gb2312)
  12. C#字节数组byte[]和字符串string如何互相转换_字符串转换_06

  13. 在visual studio中按F5调试模式运行,就可以看到效果,上面从字符串转为字节数组后,再从字节数组重新转回来的字符串是一样的
  14. C#字节数组byte[]和字符串string如何互相转换_字符串_07