如题,我想把byte[]类型转为string类型,用如下方法:string s = System.Text.Encoding.Default.GetString(buff, 9, 30);
//转换后的结果是这样的:\02\03\04\05\06\07\08\09\00\01\02\03\04\05\0我不需要\0,请问如何转之后,结果是不带\0的?
请给代码,谢谢

解决方案 »

  1.   

    可以这样:string s = System.Text.Encoding.Default.GetString(buff, 9, 30);
    s = s.Replace("\0", "");
    但是这样效率高吗?
      

  2.   

    Convert.ToBase64String(buff);
    如果字节数组不是由字符串转过来的,就不要用字符编码来转换了。
      

  3.   

    效率没测试过,你好可以正则
    String = System.Text.RegularExpressions.Regex.Replace(String, String)
      

  4.   


      string s = @"\02\03\04\05\06\07\08\09\00\01\02\03\04\05\0";
      string t = s.Replace(@"\0", "");这样已经很简单了,
      

  5.   

    还有一点很重要,不要随便胡乱把byte[]转为字符串。因为这是不对称的,根本不能保证转回去,byte[]转为string肯定是要丢内容的。假设byte[]根本不是合法的字符串,你为什么要转换呢?
      

  6.   

    BitConverter.ToString(/*byte[]数组*/,/*起始索引*/,/*长度*/)
    不过字节->字符串还得谨慎,这个过程可能会无法复原,和字符串的编码有关