日期:2014-05-20  浏览次数:20733 次

为什么结果会这样 请发表意见
我是想把一个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


------解决方案--------------------
up
------解决方案--------------------
我运行了结果和lz一样。

我想可以与byte和int的存储空间大小有关吧~~
------解决方案--------------------
> > 是算术位移,> > > 是逻辑位移
------解决方案--------------------
mark