一个long类型的数:3232235879  转换为int型以后变成了-1062731417
我现在想把-1062731417  再转换回来
请问该怎么做呢

解决方案 »

  1.   

    long类型的转成了int, 本来就会使数据失真,没有可逆性。
      

  2.   

    这是因为你转换成int类型以后,数字的最高位是1的缘故,你转换回来要变成正数也很简单,按照取反加1的原则即可。
      

  3.   

    不可能转换回去的long是64位的,转成int的时候直接把高32位去掉了,怎么恢复!不可能
      

  4.   

    你可以用>>>无符号向右位移一位,然后再转换成long再用<<符号左位移一位,因为向右位移一位会丢失一位,因此你要判断数字是否为奇数,如果是奇数,那么最右一位为1,那么你转换完成以后要+1,如果是偶数,最右一位是0,那么左位移以后就不用再做处理了。
      

  5.   

    位运算可以程序设计的基础,有空多看看,虽然不常用到,但是能解决很多棘手的问题。下面是代码。
    long i=3232235879l;
    //这里转换成int类型
    int j=(int)i;
    System.out.println(j);//这里输出的是-1062731417
    //这里你用右位移运算,向右位移一位
    long temp=j>>>1;
    temp<<=1;
    //判断是否为奇数,奇数加1
    if(j%2!=0){
    temp+=1;
    }
    System.out.println(temp);
      

  6.   

    Long.valueOf(Integer.toBinaryString(-1062731417),2);
    不知是不是都可逆,不过这个转回去了。