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); //准备发送的字节
解决方案 »
- string.Format时,值类型要不要加ToString,或者说是装箱还是ToString性能高
- OracleApater.Fill为什么卡住了?
- 这两本书哪本更好?(ASP.NET的书)
- c#中的combobox绑定问题
- 谁知道YYYY/MM/DD 格式的 输入 怎么验证(check) 阿,快 下班了马上结贴
- 动态控件问题
- 新手问个重载++的问题!!!!!
- 如何判断本机一个指定端口是否已经使用?
- 有懂的来说一下
- Entity Framework中数据验证的问题
- vs2005中DataGridView如何合并单元格
- 再问一个没有什么技术含量的问题 关于C1控件c1MainMenu中菜单遍历的问题
//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