C#传short或int给C++(通过BitConverter.GetBytes(...)获取字节)时是否需要用IPAddress.HostToNetworkOrder来进行转换?即下面这样是否正确?
short sh1 = 4322; //准备发送的short
short network1 = IPAddress.HostToNetworkOrder(sh1);
byte[] output = BitConverter.GetBytes(network1); //准备发送的字节
short sh1 = 4322; //准备发送的short
short network1 = IPAddress.HostToNetworkOrder(sh1);
byte[] output = BitConverter.GetBytes(network1); //准备发送的字节
//C++(VS.NET 2003中的MFC):
short i = 555;
BYTE b1 = (BYTE)i;
BYTE b2 = (BYTE)(i>>8);//C#(VS.NET 2003):
short sh1 = 555;
byte[] buffer = Short2Bytes(sh1);
byte b1 = (byte)sh1;
byte b2 = (byte)(sh1>>8);然后发现两边顺序是一样的。
是否就意味着我是不需要转换的?那么IPAddress.HostToNetworkOrder应该在哪种情况下使用呢?
{
buf = b;
len = nlen; mData.Head = System.Text.Encoding.Default.GetString(buf,0,20).Replace("\0","");
mData.Cmd = System.Text.Encoding.Default.GetString(buf,20,20).Replace("\0","");
mData.SmsData = System.Text.Encoding.Default.GetString(buf,40,20).Replace("\0","");
}
在C++传来的数据后,都补了"\0",我也正在想什么合适的好的办法。把结构转换为byte[] .
可以用序列化。但不确定顺序会不会有影响!
QQ:交流一下。112090835