我是想把一个int按字节存储在byte里,可是复原后的数很奇怪,有时候能复原,有时候不能复原。为什么?
程序如下:
public class TEst
{
public static void main(String[] args)
{
int t;
t=456595487;
System.out.println(t+":"+test(t));
t=456595436;
System.out.println(t+":"+test(t));
} public static int test(int t1)
{
int t2=0xffffffff;
byte[] b=new byte[4];
for(int i=0;i<4;i++)
{
b[i] = (byte) t1;
t1=t1>>8;
}
for(int i=3;i>=0;i--)
{
t2=t2<<8;
t2=t2+b[i];
}
return t2;
}
}结果如下:
456595487:456595487
456595436:456595180
程序如下:
public class TEst
{
public static void main(String[] args)
{
int t;
t=456595487;
System.out.println(t+":"+test(t));
t=456595436;
System.out.println(t+":"+test(t));
} public static int test(int t1)
{
int t2=0xffffffff;
byte[] b=new byte[4];
for(int i=0;i<4;i++)
{
b[i] = (byte) t1;
t1=t1>>8;
}
for(int i=3;i>=0;i--)
{
t2=t2<<8;
t2=t2+b[i];
}
return t2;
}
}结果如下:
456595487:456595487
456595436:456595180
解决方案 »
- socket问题
- java性能探讨,高手赐教~(以及javabean的打包)
- JAVA连接SQL SERVER的时候出现cannot open database 的问题???
- 任意输入数字:假如输入1234 输出 : 壹千贰百叁拾肆元整
- 菜鸟想问关于控制时间的问题
- 想学Java,不知哪里可以下载JBiulder
- VC无符号16位数,分别取它的高8位和低8位,请问在JAVA中怎样实现相同功能?
- Vector的add(Object o)和addElement(Object o)有何区别?
- 分分分!专家的命根!小虾送分!请问专家:我怎么将数据库中的数据用jTextfield 显示出呢??给一点代码把?????
- 寻找md5的加密算法,java版的
- 關於Linux中JAVA程序運行的問題
- 求教,如何从文件中读取数据
{
public static void main(String[] args)
{
int t;
t=456595487;
System.out.println(t+":"+byteToInt(intToByte(t)));
t=456595436;
System.out.println(t+":"+byteToInt(intToByte(t)));
t=Integer.MAX_VALUE;
System.out.println(t+":"+byteToInt(intToByte(t)));
t=Integer.MIN_VALUE;
System.out.println(t+":"+byteToInt(intToByte(t)));
t=48;
System.out.println(t+":"+byteToInt(intToByte(t)));
} public static int byteToInt(byte[] b) //byteToInt
{
int t2=0;
for(int i=3;i>=0;i--)
{
t2=t2<<8;
t2 = b[i] < 0 ? t2 + b[i] + 256 : t2 + b[i];
}
return t2;
}
public static byte[] intToByte(int t1) //intToByte
{
byte[] b=new byte[4];
for(int i=0;i<4;i++)
{
b[i] = (byte) t1;
t1=t1>>8;
}
return b;
}
}结果如下:456595487:456595487
456595436:456595436
2147483647:2147483647
-2147483648:-2147483648
48:48感谢楼上两位。
>>是算术位移,>>>是逻辑位移
没看我回复的帖吗?就不关这个的事。