一个byte怎么转成网络字节序 一个byte怎么转成网络字节序 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 long ,int 都用这个转吗IPAddress.HostToNetworkOrder 我有一个byte[]20的一个buffer,网络转主机的时候用啥啊 在URI这里类里,有转换函数,不用自己写。 源数据是多字节的(比如int32)才需要转,单纯的字节数组不需要。其实,转不转要看双方是否一致,一致的话就不用转了 那边要求发过去是网络字节序, stClientHead stcl = new stClientHead(); stcl.nLen = 0; stcl.nType = setbyte; stcl.nPVersion = 0; stcl.nSocketFd = 0;放到一个数组里啊?? 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);}} 不懂啊,copyto不行吗,开辟空间用这个拷贝进去? 结构定义成这样的,因为你的协议规定了用网络字节序,跟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[],你可以把它发送出去。 要自己转成byte的,怎么转啊,我的结构里面有int,有byte,还要防止字节对齐,怎么弄啊 比如说,协议规定0,1,2,3字节是nLen,网络字节序,那就byte[]buf=new byte[](xxx);Array.Copy(BitConverter.GetBytes(IPAddress.HostToNetworkOrder(nLen)),0,buf,0,4)以此类推 我先转成网络字节序赋值给结构体 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));这样对不? 差不多吧字符转BYTE数组用 Encoding.Default.GetBytes 这个转换后byte[] btType = BitConverter.GetBytes(stcl.nType); 长度编程2了 c#的datagradview实现实时监控相关问题? 时间比较问题 全服求高手,ICSharpZipLib解压问题 可能是BUB 不完美的 oledbdatadapter.ExecuteNonQuery() 问题 提示 由于将在索引、 主关键字、或关系中创建重复的值 请高手解决. C#中在DLL中如何调用其他DLL?可真的不是一般的难啊!~ vs2005哪里下载呀? Repeater控件的绑定之后调用未显示数据 请教斑马打印机105SL打印文字的方向问题 通过接口调用带构造函数继承类的方法? C# 串口开发 为什么我的网站放服务器上 看不了呢 问一个发布的问题..
其实,转不转要看双方是否一致,一致的话就不用转了
stClientHead stcl = new stClientHead();
stcl.nLen = 0;
stcl.nType = setbyte;
stcl.nPVersion = 0;
stcl.nSocketFd = 0;
放到一个数组里啊??
{
byte*pb=(byte*)pstcl;
return *pb;
......struct stClientHead
{
private int _nLen;
public int nLen
{
get{return IPAddress.HostToNetworkOrder(_nLen);}
set{_nLen=IPAddress.HostToNetworkOrder(value);}
}
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[],你可以把它发送出去。
那就
byte[]buf=new byte[](xxx);
Array.Copy(BitConverter.GetBytes(IPAddress.HostToNetworkOrder(nLen)),0,buf,0,4)
以此类推
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));
这样对不?
差不多吧
字符转BYTE数组用 Encoding.Default.GetBytes