java下写socket通信的时候,协议可能是以2字节数字表示,在java下好像没有直接的方法将数字转成字节数组,于是就在别人的方法的基础上改进,原来的方法字节顺序存放不对,会导致服务端下转换会出问题。现在这个问题已经改进了,大家可以参考一下。
public static byte[] intToBytes(int value)
{
byte[] b = new byte[4];
for (int i = 0; i < 4; i++)
{
b[ i] = (byte)((value >> (8 * i)) & 0xFF);
}
return b;
}
public static int bytesToInt(byte[] b)
{
int value = 0;
for (int i = 0; i < b.length && i < 4; i++)
{
value += (b[i] & 0xFF) << (8 * i);
}
return value;
}
public static byte[] shortToBytes(short value)
{
byte[] b = new byte[2];
for (int i = 0; i < 2; i++)
{
b[ i] = (byte)((value >> (8 * i)) & 0xFF);
}
return b;
}
public static short bytesToShort(byte[] b)
{
int value = 0;
for (int i = 0; i < b.length && i < 2; i++)
{
value += (b[i] & 0xFF) << (8 * i);
}
return (short)value;
}