一个byte怎么转成网络字节序

解决方案 »

  1.   

    long ,int 都用这个转吗IPAddress.HostToNetworkOrder
      

  2.   

    我有一个byte[]20的一个buffer,网络转主机的时候用啥啊
      

  3.   

    在URI这里类里,有转换函数,不用自己写。
      

  4.   

    源数据是多字节的(比如int32)才需要转,单纯的字节数组不需要。
    其实,转不转要看双方是否一致,一致的话就不用转了
      

  5.   

    那边要求发过去是网络字节序,
                    stClientHead stcl = new stClientHead();
                    stcl.nLen = 0;
                    stcl.nType = setbyte;
                    stcl.nPVersion = 0;
                    stcl.nSocketFd = 0;
    放到一个数组里啊??
      

  6.   

    fixed(stClientHead *pstcl=&stcl)
    {
    byte*pb=(byte*)pstcl;
    return *pb;
    ......struct stClientHead
    {
    private int _nLen;
    public int nLen
    {
    get{return IPAddress.HostToNetworkOrder(_nLen);}
    set{_nLen=IPAddress.HostToNetworkOrder(value);}
    }
      

  7.   

    不懂啊,copyto不行吗,开辟空间用这个拷贝进去?
      

  8.   

    结构定义成这样的,因为你的协议规定了用网络字节序,跟x86的不一样。
    struct stClientHead
    {
    private int _nLen;
    public int nLen
    {
    get{return IPAddress.HostToNetworkOrder(_nLen);}获取时再转回来。
    set{_nLen=IPAddress.HostToNetworkOrder(value);} 赋值时转一下
    } fixed(stClientHead *pstcl=&stcl)
    {
    byte*pb=(byte*)pstcl;
    return *pb;
    ......
    *pb就是byte[],你可以把它发送出去。
      

  9.   

    要自己转成byte的,怎么转啊,我的结构里面有int,有byte,还要防止字节对齐,怎么弄啊
      

  10.   

    比如说,协议规定0,1,2,3字节是nLen,网络字节序,
    那就
    byte[]buf=new byte[](xxx);
    Array.Copy(BitConverter.GetBytes(IPAddress.HostToNetworkOrder(nLen)),0,buf,0,4)
    以此类推
      

  11.   

    我先转成网络字节序赋值给结构体
                    byte[] btLen = BitConverter.GetBytes(stcl.nLen);//int long 转byte
                    byte[] btType = BitConverter.GetBytes(stcl.nType);
                    byte[] btPVersion = BitConverter.GetBytes(stcl.nPVersion);
                    byte[] btSocketFd = BitConverter.GetBytes(stcl.nSocketFd);
                    byte[] btPriority = BitConverter.GetBytes(stcl.bPriority);
                    //byte[] bSendData = new byte[14];
                    ArrayList arrTemp = new ArrayList();
                    arrTemp.AddRange(btLen);
                    arrTemp.AddRange(btType);
                    arrTemp.AddRange(btPVersion);
                    arrTemp.AddRange(btSocketFd);
                    arrTemp.AddRange(btPriority);
                    byte[] bSendData = (byte[])arrTemp.ToArray(typeof(byte));
    这样对不?
      

  12.   


    差不多吧
    字符转BYTE数组用 Encoding.Default.GetBytes
      

  13.   

    这个转换后byte[] btType = BitConverter.GetBytes(stcl.nType); 长度编程2了