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

 

最新文章

  1. 模具厂MES项目介绍
  2. TCP/IP协议详解 卷1—读书笔记(1)
  3. CKEditor实现图片上传
  4. Eclipse "IOConsole updater" has encounter a problem
  5. C# 反射 设置字段值无效的解决办法
  6. Quartz-2D绘图之图形上下文详解
  7. 移动平台3G手机网站前端开发布局技巧汇总
  8. 用gitolite新建项目,clone后首次push,可能会出现: git: No refs in common and none specified; doing no
  9. ios系统视频播放器MPMoviePlayerController应用遇到的坑
  10. a标签无跳转的死链接
  11. 老司机带你开飞机 一: mssql on linux 安装指导
  12. mysql有多条记录的单个字段想存为一个字段显示的方法
  13. spring cloud之Feign的使用
  14. 【转】Linux netstat命令详解,高级面试必备
  15. visio studio删除空行
  16. 安装 composer 并启动 yii2 项目
  17. JMeter学习(四)参数化(转载)
  18. C#写的COM组件注册问题兼论微软Regasm注册的BUG
  19. SQL 查询结果保存为 临时表
  20. SQL数据库简单的建立与操作

热门文章

  1. Python之逻辑运算符
  2. rest-assured的日志使用介绍
  3. 大佬的编码建议,让你的代码更pythonic
  4. 【原创】SpringMVC同一RequestMapping返回不同的类型
  5. 洛谷 P3388 【模板】割点(割顶)
  6. Week 5: Object Oriented Programming 9. Classes and Inheritance Exercise: int set
  7. (找到最大的整数k使得n! % s^k ==0) (求n!在b进制下末尾0的个数) (区间满足个数)
  8. PIE SDK打开静止卫星数据
  9. Linux下jenkins改端口、解决内存溢出、版本升级
  10. GreenPlum 大数据平台--基础使用(一)