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


由於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

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM