因为代码有问题,获取Long值的时候,变成了xxx.intValue(),导致入库的id错误,后来想到
因为是int溢出,所以溢出值为2^31,2^31^2-溢出后的值。
所以 原来 值 a,intValue()后为b(负数),a = 2^32 + b
由于功能需要,需要传4字节的整数,但数据库里的值是long类型,所以只好把long转为int了,这个比较简单,直接强转:
long d = 2215051265L;
int i = (int) d;
System.out.println(i);
但这样打印出来的值是负数的:-2079916031;
之后想反转这个int为原来的long值,
Long.parseLong();
Long.valueOf();
和直接 long d = i;
这几种方式都不行。
最后经过群里的建议转成字符串,所以就想到转成16进制数,这样就解决了
String hax = Integer.toHexString(i);
System.out.println(Long.parseLong(hax, 16));