long cal0= 0xED55F88CA;
 int tmpi=(int)cal0;  //-715159350(D55F88CA)
 想将tmpi转成无符号数(将最高位符号位1也当作数据即将tmpi转成3579807946),有什么简便的方法?

解决方案 »

  1.   

    尼玛,一点都看不懂你想干什么,0xED55F88CA确定不超过范围,你的cal0到底等于什么?
      

  2.   

    首先呢,
    long cal0= 0xED55F88CA;
    由于这个字面量超出了int范围,所以是编译错误的,末尾要加L。其次呢,Java没有无符号的变量类型。首位总被当做符号位。我感觉应该没法搞了吧
      

  3.   

    3579807946 这个数int装不下.        String str = "0xED55F88CA";
            Long ll = Long.parseLong("D55F88CA",16);// substring一下,再parse这是一种思路 可以得到你的那个结果  不过我不太清楚你说的符号位是什么 , 符号位占用了4位(一个E)?另一种思路就干脆mod一下.  %0x100..0(我也不知道几个零)
      

  4.   

    java没有无符号数的概念,如果想取绝对值,用Math.abs方法,或者直接取反加一,如果你的数大于证书临界值,请用长整数long,如果你的数大于长整数零界值,可以用超大整数BigInteger对象