如何将btye[]转换为其他类型?
我从Socket中接收到的数据都是byte[]类型的,如果里面包含的是int32类型的,我目前的做法如下:
// RecvBuf[]中包含int32类型数据的byte[],将其转换为long型,赋值给ServerSecs变量
// 为了演示完整过程,这里将Byte数组转换为网络序列的long型,方便调用NetworkToHostOrder函数。这里也可以不调用NetworkToHostOrder函数,而直接拼成主机序列。
StringBuilder sbValue = new StringBuilder();
sbValue.AppendFormat("{0:X2}{1:X2}{2:X2}{3:X2}00000000", RecvBuf[3],
RecvBuf[2], RecvBuf[1], RecvBuf[0]);
long ServerSecs = long.Parse(sbValue.ToString(),
System.Globalization.NumberStyles.HexNumber);
// 这里转换网络字节序为主机字节序
ServerSecs = System.Net.IPAddress.NetworkToHostOrder(ServerSecs);
有没有更好的办法呢?
再考虑这种情况:如果对方是将一个C++定义的结构实例的内存memcpy到buf中,用Socket发送给我的,我如何将接收到的类型byte[]的数据,转换为对应的数据呢,只能一位一位的操作吗?