您的位置:首页 > 编程语言 > Java开发

java 将long类型的数值转无符号数

2013-11-08 10:53 288 查看
由于JAVA中基本数据类型均为有符号数,而且最大数据类型long为8字节
假如long为负数时,最高位为1,转为无符号数时会超出long的取值范围,所以转换规则如下:

方法:

public static final BigDecimal readUnsignedLong(long value) throws IOException {
if (value >= 0)
return new BigDecimal(value);
long lowValue = value & 0x7fffffffffffffffL;
return BigDecimal.valueOf(lowValue).add(BigDecimal.valueOf(Long.MAX_VALUE)).add(BigDecimal.valueOf(1));
}

方法类似于示例:
int value = -3;
long unsignedValue = value & Long.MAX_VALUE;
unsignedValue |= 0x80000000L;

其中0x7fffffffffffffffL等价于Long.MAX_VALUE

0x80000000L 等价于Long.MAX_VALUE+1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: