java 將long類型的數值轉無符號數

因爲JAVA中基本數據類型均爲有符號數,並且最大數據類型long爲8字節
假如long爲負數時,最高位爲1,轉爲無符號數時會超出long的取值範圍,因此轉換規則以下:大數據

 

方法:spa

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));
 }ci

 

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

 其中0x7fffffffffffffffL等價於Long.MAX_VALUEclass

 0x80000000L 等價於Long.MAX_VALUE+1數據類型

相關文章
相關標籤/搜索