在进行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]);
}