谢谢。

解决方案 »

  1.   

    public class BIConvert  //字节 整形 转换类 网络格式转换为内存格式
    {
    public static byte[] Int2Bytes(uint i)  //转换整形数据网络次序的字节数组
    {
    byte[] t=BitConverter.GetBytes(i) ;
    byte b=t[0];
    t[0]=t[3];
    t[3]=b;
    b=t[1];
    t[1]=t[2];
    t[2]=b;
    return(t);
    }
      

  2.   

    看你怎么传了,如果你传的是xml或者序列化的数据,那根本不用自己转,还原就好了.web service更是如此
      

  3.   

    htonl() VC中有这个函数将主机转正网络字节,ntohl可以转回来。以前的版本是VC写的。。都进行了转换后发的。我写的要求收到INT型数据后转回来不知道C#中有没有这个函数。没有应该怎么办?
      

  4.   

    private static void htonl(int i, byte[] buf,int ofs)
    {
    buf[ofs  ] = (byte) ((i >> 24) & 0xFF);
    buf[ofs+1] = (byte) ((i >> 16) & 0xFF);
    buf[ofs+2] = (byte) ((i >> 8 ) & 0xFF);
    buf[ofs+3] = (byte) ((i      ) & 0xFF);
    }private static int ntohl(byte[] buf, int ofs)
    {
    int i0 = (buf[ofs  ] & 0xFF);
    int i1 = (buf[ofs+1] & 0xFF);
    int i2 = (buf[ofs+2] & 0xFF);
    int i3 = (buf[ofs+3] & 0xFF);

    return ((i0 << 24) | (i1 << 16) | (i2 << 8) | (i3));
    }
      

  5.   

    关键是这种东西是机器相关的,所以无法直接用DotNet实现必须是按机器分别实现,所以上面的代码也仅在LittleEdian的机器上是对的
      

  6.   

    当然我们现在能涉及到的绝大部分是LittleEndian的并且Windows也好像只能在LittleEndian结构的机器上跑所以上面代码几乎是正确的  :)
      

  7.   

    tiaoci(我挑刺,我快乐) 谢谢你啊。。
      

  8.   

    我整理了一下关于Endian的操作,但是太长了,我贴不上来,需要的人给个邮箱,下面是这个模块的大纲public sealed class EndianUtil
    {
          public static short Endian(short n);
          public static int Endian(int n);
          public static ushort Endian(ushort n);
          public static uint Endian(uint n);      public static short ReadInt16(Stream stream, bool littleEndian);
          public static short ReadInt16(byte[] buffer, int index, bool littleEndian);
          public static int ReadInt32(Stream stream, bool littleEndian);
          public static int ReadInt32(byte[] buffer, int index, bool littleEndian);
          public static ushort ReadUInt16(Stream stream, bool littleEndian);
          public static ushort ReadUInt16(byte[] buffer, int index, bool littleEndian);
          public static uint ReadUInt32(Stream stream, bool littleEndian);
          public static uint ReadUInt32(byte[] buffer, int index, bool littleEndian);      public static void Write(short n, Stream stream, bool littleEndian);
          public static void Write(int n, Stream stream, bool littleEndian);
          public static void Write(ushort n, Stream stream, bool littleEndian);
          public static void Write(uint n, Stream stream, bool littleEndian);
          public static void Write(short n, byte[] buffer, int index, bool littleEndian);
          public static void Write(int n, byte[] buffer, int index, bool littleEndian);
          public static void Write(ushort n, byte[] buffer, int index, bool littleEndian);
          public static void Write(uint n, byte[] buffer, int index, bool littleEndian);
    }