我采用如下方法进行转换Byte [] bb = new Bytes[256];string ss = Encoding.Default.GetString(bb);
Byte [] cc = Encoding.Default.GetBytes(ss);结果这两个byte的长度是不一样的,请教这两者正确的转换方式是什么

解决方案 »

  1.   


    string ss = Convert.ToBase64String(bb);
    byte[] cc = Convert.FromBase64String(ss);
      

  2.   


    byte [] bb = new bytes[256];string ss = Encoding.Default.GetString(bb);
    byte [] cc = Convert.FromBase64String(ss); 
    试试看
      

  3.   


    这能有什么“正确”转换?它们根本不是一样的东西。就好象是把猪肉塞进绞肉机,出来的是肉馅;反过来可不成立。把byte[]塞入绞肉机,出来的是string。反过来可是不成立,因为出来的string中成分已经改变了。
      

  4.   


    这个是可以的。它放弃了所谓Encoding/Default这种奇怪的想法。
      

  5.   

    语法上可能行,但是本人看了一遍想了想,感觉你又回去起点了bb不用转不就是Byte数组类型了吗
      

  6.   

    我的需求是这样的,需要把这个byte数组中对应的相应字符串替换成另一个字符串,比如byte中存在"123"字符串,将他替换为"456",所以我才需要把它转换为string后进行操作,大家有什么其他办法么
      

  7.   

    楼上纯扯淡“绞肉机”的例子根本不适合这个情况
    如果只能Encode而不能Decode的话,或者Decode不能到到一致结果的话,Encode还有什么意义楼主你的问题在于,你吧encode和decode弄反了
    Encoding.Default.GetString是个Decode的方法
    Encoding.Default.GetBytes是个Encode方法你先Decode后Encode
    你的第一步GetString无法保证你的原始byte能够正确的Decode
    除非你的原始byte就是用对应的Encode方法生成的而3楼的顺序是合理的
    Convert.ToBase64String(bb);是endoce方法
    Convert.FromBase64String(ss);是decode方法当然这两组方法针对的对象不一样
    你的方法是对string进行编码解码
    而3楼的方法是针对byte[]编码解码所以要看你的需求选择
      

  8.   


            public static void EncodingAndDecoding() {
                string testStr = "TestString";
                byte[] src = Encoding.Default.GetBytes(testStr);
                string tmp = Encoding.Default.GetString(src);
                byte[] dst = Encoding.Default.GetBytes(tmp);
                Console.WriteLine(src.Length);
                Console.WriteLine(dst.Length);
            }
      

  9.   

    很多种编码方式都可以是“绞肉机”。编码就意味着规则,一些违反规则的字节流就会被绞肉。
    比如ASCII编码会忽略汉字;比如UTF8解码会检查规则,如果看到一个225,它就会期待下两个字节都大于127。违反规则的结果取决于设定,可以抛出异常,也可以忽略,也可以用特定字符代替。比如下面的例子:byte[] seq1 = { 225, 51, 51 };
    string s = Encoding.UTF8.GetString(seq1);
    byte[] seq2 = Encoding.UTF8.GetBytes(s);  // {239, 192, 189, 51, 51}
      

  10.   

    看看下面整理的文章:      string和byte[]的转换 (C#)