java 负数int与long值互转方法 日志记录

因为代码有问题,获取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));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值