我欲将IP转成10进值然后存到数据库MYSQL中,对应的字段是INTEGER类型的,有个属性是Unsigned的。
int i = 192*255*255*255+168*255*255+100*255+130
由于i算出来是个很大的负数,存到数据库的时候会有异常,把unigned去掉就OK了,但是事实上不可以这样做。请教高手该怎么处理。

解决方案 »

  1.   

    long 不行,试过了,bigdecimal还没试过
      

  2.   

    为什么要这样存iP?
    ip本来就是占四个字节int,java的一个int正好可以放下.
    用移位操作可以把四个子段放入一个int.
      

  3.   

    印象中java是用补码来表示整形的,出现负数有可能.
      

  4.   

    int超出范围-->变成二进制数-->把二进制数从右边截取成一个int范围内的数-->转成十进制数
    有时候截取后二进制数第一个数是1 那就是个负数了
      

  5.   

    例如
    byte b=(byte)129;
    System.out.println(b);输出:-127