在JAVA与C#通讯时, 由于开发语言的差异,发送端与接收端需要做转换才可以得到正确的值。
Java端的 int to byte
public static byte[] ConvertIntToByteArray(int i)
{
byte[] arry = new byte[4];
arry[3] = (byte)(((i & 0xFF000000) >> 24) & 0xFF);
arry[2] = (byte)(((i & 0x00FF0000) >> 16) & 0xFF);
arry[1] = (byte)(((i & 0x0000FF00) >> 8) & 0xFF);
arry[0] = (byte)((i & 0x000000FF) & 0xFF);
return arry;
}
c# 端的 byte to int
byte[] datasize = new byte[4]; soket.Receive(datasize, 0, 4, SocketFlags.None); int size = BitConverter.ToInt32(datasize, 0);
-------------------------------------------------------------------------------------------
C# 端的 int to byte
int size = data.Length; //byte[] datasize = new byte[4]; byte[] datasize = BitConverter.GetBytes(size); //4个字节的数据 sent = soket.Send(datasize);
Java 端的 byte to int
public static int ConvertByteToInt(byte[] arry)
{
int i = 0;
i += (int)(arry[0] & 0xFF);
i += (int)((arry[1] & 0xFF) << 8);
i += (int)((arry[2] & 0xFF) << 16);
i += (int)((arry[3] & 0xFF) << 24);
return i;
}
或
public static int ConvertByteArrayToInt(byte[] arry)
{
int data = 0;
byte Loop;
for (int i = 0; i < arry.length; i++) {
Loop = arry[i];
data += (Loop & 0xFF) << (8 * i);
}
return data;
}