日期:2014-05-17  浏览次数:21217 次

自定义类型如何进行转换成字节数组进行传输
1、C#中,我自定义了一个类型例如 
MyDefObjClass

  public string name{get;set;} 
  public int Id {get;set;}
}
服务器端 是C#写的一个监听程序,客户端是HTML5 或 c#写的一个winform,如何将类型进行转换(比如字节数组)进行通信?
请帮忙将以上两个的客户端的转换过程写一下好么!


2、还有个问题求教,如果一个字符串为"00000001" ,能否将其转化成一个字节,因为用Encoding.ASCII.GetBytes()获取到的是一个8字节的字节数组,如何将其对应二进制位,填入一个字节中!
------解决方案--------------------
序列化 serialization
------解决方案--------------------
第二个问题:

string str="00000001";
byte b=Convert.ToByte(str,2);
Console.Write("转化后的字节为{0}",b);

------解决方案--------------------
网络传输其实就是一个char* ,你可以认为是BYTE* 或者STRING
将你的结构体序列化到二进制。如果有必要再做一次BASE64编码。就可以了。
至于加密,压缩与否就看项目需求了。一般正式项目必须。
------解决方案--------------------
不太完全的解决方法。


 static void Main(string[] args)
        {
            string str = "11110000";
            double d = (Demo(str.Substring(0, 1), str.Substring(1, 1), str.Substring(2, 1), str.Substring(3, 1)) + Demo(str.Substring(4, 1), str.Substring(5, 1), str.Substring(6, 1), str.Substring(7, 1)));
            byte b = (byte)d;
            Console.WriteLine(b);
            Console.WriteLine(b.ToString("x2"));

        }

        static double Demo(params string[] strS)
        {
            return (int.Parse(strS[0]) * Math.Pow(2, 3)) + (int.Parse(strS[1]) * Math.Pow(2, 2)) + (int.Parse(strS[2]) * Math.Pow(2, 1)) +(int.Parse(strS[3]) * Math.Pow(2, 0));
        }