[原创]Java下X86机,Bytes和Int的转换
Java默认的从Int32到Byte[4]的转换,是高位在前。而在C#等Window程序通过网络发送数据时,Int32数写入流时,写得一般是低位在前,高位在后。
为了使它们能够正确的交互,需要用Java按照X86的习惯来处理Byte[4]和Int32之间的相互转换。
为了使它们能够正确的交互,需要用Java按照X86的习惯来处理Byte[4]和Int32之间的相互转换。
/*
作者:阿牛(牛昆亮) QQ:273352165 MSN:niukl@hotmail.com
声明:可以免费使用,请您保留此信息
如果您有什么改过,记得告诉我!
*/
private static byte[] getBytes(int val)
{
byte[] ret = new byte[4];
int v = val;
ret[0] = (byte)(v & 0x00ff);
ret[1] = (byte)(v>>=8 & 0x00ff);
ret[2] = (byte)(v>>=8 & 0x00ff);
ret[3] = (byte)(v>>=8 & 0x00ff);
return ret;
}
private static int fromBytes(byte[] val)
{
int ret = 0;
ret |= (int)(val[0] & 0xff) << 0;
ret |= (int)(val[1] & 0xff) << 8;
ret |= (int)(val[2] & 0xff) << 16;
ret |= (int)(val[3] & 0xff) << 24;
return ret;
}
作者:阿牛(牛昆亮) QQ:273352165 MSN:niukl@hotmail.com
声明:可以免费使用,请您保留此信息
如果您有什么改过,记得告诉我!
*/
private static byte[] getBytes(int val)
{
byte[] ret = new byte[4];
int v = val;
ret[0] = (byte)(v & 0x00ff);
ret[1] = (byte)(v>>=8 & 0x00ff);
ret[2] = (byte)(v>>=8 & 0x00ff);
ret[3] = (byte)(v>>=8 & 0x00ff);
return ret;
}
private static int fromBytes(byte[] val)
{
int ret = 0;
ret |= (int)(val[0] & 0xff) << 0;
ret |= (int)(val[1] & 0xff) << 8;
ret |= (int)(val[2] & 0xff) << 16;
ret |= (int)(val[3] & 0xff) << 24;
return ret;
}
QQ:273352165
evlon#126.com
转载请注明出处。