byte[] msg = new Byte[256];
 s.ReceiveFrom(msg, ref senderRemote);
//string deviceID = Convert.ToString(msg[5], 16);
 string rt = System.Text.UTF8Encoding.UTF8.GetString(msg);msg数组里存的是 16进制 内容这样 rt 的字符串,显示出来的是乱码, 有什么简单的办法,把msg数组里的16进制字节,组成一个字符串如:“AA BB CC DD EE”

解决方案 »

  1.   

    msg.Cast<byte>().Tolist().ForEach(p=>tr+=p.ToString("X"));
      

  2.   

    错误 1 “System.Collections.Generic.IEnumerable<byte>”不包含“Tolist”的定义,并且找不到可接受类型为“System.Collections.Generic.IEnumerable<byte>”的第一个参数的扩展方法“Tolist”(是否缺少 using 指令或程序集引用?) C:\Documents and Settings\Administrator\桌面\log4netDemo1\Program.cs 39 34 RFS6006Test
      

  3.   

     string base64String = Convert.ToBase64String(msg);
      

  4.   

    public static string byteToHexStr(byte[] bytes)
            {
                string returnStr = "";
                if (bytes != null)
                {
                    for (int i = 0; i < bytes.Length; i++)
                    {
                        returnStr += bytes[i].ToString("X2");
                    }
                }
                return returnStr;
            } 这么写,能实现了,,但是也有问题,,就是数组开了256个大小后,而实际内容若只有3个,调用函数,除了前三个 ,,,后面全是补“00” ,非要补齐 256个长度从协议约定上 改改,应该不是啥问题了
      

  5.   

    错误 1 “System.Collections.Generic.IEnumerable<byte>”不包含“Tolist”的定义,并且找不到可接受类型为“System.Collections.Generic.IEnumerable<byte>”的第一个参数的扩展方法“Tolist”(是否缺少 using 指令或程序集引用?) C:\Documents and Settings\Administrator\桌面\log4netDemo1\Program.cs 39 34 RFS6006Test
    像这种问题可以右键点击Cast<byte>()转到定义查看他提供的一系列变量和方法,都有详细的注释。