• C#中有关string和byte[]转换的问题


     今天在工作中遇到一个问题,如何将一个string类型转成byte[]?

      这种问题就属于知道了就及其简单,不知道就够你忙活半天的那种。其实只要一个语句就OK了:

      
    byte[] byteArray = System.Text.Encoding.Default.GetBytes(  str  );

      怎么样,够简单吧?

      反过来也是一样,把byte[]转成string:

    string str = System.Text.Encoding.Default.GetString( byteArray );


      其实,在System.Text.Encoding class中,还有很多其它有用的方法,像GetChars,从一个byte[]转成一个char[],等等,可以参考MSDN。

      另外,还有其它编码方式的,如System.Text.UTF8Encoding class、System.Text.UnicodeEncoding class等,根据不同需要可选不同的class。

    另外一种方法是如下:

    名称 说明
    BitConverter.ToString () 返回表示当前 Object 的 String。
    BitConverter.ToString (Byte[]) 返回由字节数组的元素转换来的 String。
    由 .NET Compact Framework 支持。

    BitConverter.ToString (Byte[], Int32) 返回由字节数组中从指定数组位置开始的元素转换来的 String。
    由 .NET Compact Framework 支持。

    BitConverter.ToString (Byte[], Int32, Int32) 返回由字节数组中指定位置、指定数量的字节转换来的 String。
    由 .NET Compact Framework 支持。
     

    BitConverter.ToString (Byte[]) 这个方法不行,得到的是byte数组的16进制字符串, 如"AH-0A-1A"



    --引用-------------------------------------------------- 
    如果是未知编码方式呢?
    比如用FileStream从一个文件中读取了流到byte[]中,这时候并不知道这个文件的编码方式是gb2312还是utf-8,如何才能正确的取到string值?
    --------------------------------------------------------
    你可以试试这种解决方案:
    StreamReader sr = new StreamReader(new MemoryStream(byteArray));
    string str = sr.ReadToEnd();

     

     

     


    作者:古梅飞动
    公司:蜜团科技
    出处:http://www.mitsofts.com/index.php
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    86. 分隔链表
    85. 最大矩形
    84. 柱状图中最大的矩形
    82. 删除排序链表中的重复元素 II
    80. 删除排序数组中的重复项 II
    77. 组合
    java-xml
    java-反射
    springboot解决跨域问题(CorsConfig )
    解决oracle锁表
  • 原文地址:https://www.cnblogs.com/luhuan860/p/1493005.html
Copyright © 2020-2023  润新知