在进行socket通信时,常常需要传输某个变量值的长度,比如一个注册包有名字,地址等信息。在进行包的封装定义时,一般是以nameLength+name+addressLength+address形式封装。而无线网络传输是按字节流传输的,这就要求对整形数据进行转换。一个字节表示的整数最大范围是2的7次幂,所以大整数需要转换成2个字节。下面是转换的函数:
客户端:
public byte intToOneByte(int n)
{
return ((byte)(n & 0x000000ff));
}
public byte[] intToTwoBytes(int n)
{
byte[] ret= new byte[2];
ret[0] = (byte)((n>>8) & 0x000000ff);
ret[1] = (byte)(n & 0x000000ff);
return ret;
}
服务器端:
public int byteToInt(byte bt)
{
return ((int)bt);
}
/**
* @param bt:2 elements in byteArray.
* @return
*/
public int byteArrayToInt(byte[] bt)
{
return (int)((bt[0]<<8) | bt[1]);
}
博客介绍了socket通信时传输变量值长度的相关内容。在包封装定义时,常采用特定形式。因无线网络按字节流传输,需对整形数据转换,大整数要转成2个字节,并给出了客户端和服务器端的转换函数。
9436

被折叠的 条评论
为什么被折叠?



