Java 语言中的 long 类型虽然是64位, 但却不是 unsigned 的. 你问我为何, 我也不知道, 不过倒是可以参考几句 Gosling 的采访:

Gosling: For me as a language designer, which I don't really count myself as these days, what "simple" really ended up meaning was could I expect J. Random Developer to hold the spec in his head. That definition says that, for instance, Java isn't -- and in fact a lot of these languages end up with a lot of corner cases, things that nobody really understands. Quiz any C developer about unsigned, and pretty soon you discover that almost no C developers actually understand what goes on with unsigned, what unsigned arithmetic is. Things like that made C complex. The language part of Java is, I think, pretty simple. The libraries you have to look up.

Java 这个设计真的好鸡肋, 但说实话, 写了这么久 Java 真的很少用到 uint64 类型. 不过最近由于使用 protocol buffer 编码数据, 有同事设计了一个编码规则, 就真的遇到了实实在在的 uint64 类型的数据, 在 Go 语言中肯定是没有问题, 可转到 Java 中就变成了负数, 数据需要 JOIN, 因此只有想法子转成字符串. 代码也很简单:

// Guava 中有 UnsignedLong 实现

public String toUint64String(long longValue) {

final String binaryString = Long.toBinaryString(longValue);

final UnsignedLong unsignedLong = UnsignedLong.valueOf(binaryString, 2);

return unsignedLong.toString();

}

谨以此文, 鄙视一下 Java 中鸡肋的设计.

-- EOF --

java uint64_Java 中的 uint64相关推荐

  1. 统计java文件中的代码行数

    统计Java代码行数工具类  --  CodeCounterUtil.java 统计指定目录下的java文件中代码行数  --  public static int  getCodeNumFromFo ...

  2. Java虚拟机规范阅读(二)IEEE754简介以及Java虚拟机中的浮点算法

    什么是浮点数 在计算机系统的发展过程中,曾经提出过多种方法表达实数.典型的比如相对于浮点数的定点数(Fixed Point Number).在这种表达方式中,小数点固定的位于实数所有数字中间的某个位置 ...

  3. Java 8中一些常用的全新的函数式接口

    这一篇属于菜鸟级博客,只是介绍了一些在Java 8中新出现的一些很有用的接口,通过一些简单的例子加以说明,没有深入地阐述. 函数式接口 什么是函数式接口? 函数式接口,@FunctionalInter ...

  4. 你还在 Java 代码中写 set/get 方法?赶快试试这款插件吧!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:Mr.ml https://blog.csdn.net/Ma ...

  5. 聊一聊Java 泛型中的通配符 T,E,K,V,?

    点击上方"方志朋",选择"设为星标" 回复"1024"获取独家整理的学习资料 作者:glmapper juejin.im/post/5d57 ...

  6. Java开发中的23种设计模式详解(转)

    设计模式(Design Patterns) --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  7. java代码中fastjson生成字符串和解析字符串的方法和javascript文件中字符串和json数组之间的转换方法...

    1.java代码中fastjson生成字符串和解析字符串的方法 List<TemplateFull> templateFulls = new ArrayList<TemplateFu ...

  8. java treeset 删除_删除Java TreeSet中的最高元素

    要删除最高元素,请使用pollLast()方法. 创建一个TreeSet并向其中添加元素-TreeSet tSet = new TreeSet(); tSet.add("78"); ...

  9. 如何优雅地在 Java 8 中处理异常

    2019独角兽企业重金招聘Python工程师标准>>> 前言 Java 8 引入的流 (Stream) API 和 lambda 表达式为我们打开了新世界的大门,自此之后我们也可以在 ...

  10. Java语言中的生僻知识

    最近有一首名叫<生僻字>的流行歌曲火遍大江南北,创作者给佶屈聱牙的生僻字,配上了优美明快的旋律,竟然让歌曲变得琅琅上口.悦耳动听起来,平时不太常见的拒人于千里之外的这些汉字也不再那么陌生, ...

最新文章

  1. 【Windows 逆向】OD 调试器工具 ( 推荐汉化版的 OD 调试工具 | 吾爱破解专用版Ollydbg | 备选工具 )
  2. 在双11大促中的数据库服务器
  3. matlab 安装glpk,mac上安装GLPK
  4. 平均年薪30万的深度学习算法工程师,正面临100万的人才缺口
  5. mac docker 共享_如何在Docker for Mac中加快共享文件访问
  6. Nginx 这一牛X的功能,你知道吗
  7. maven错误相关(整理中)
  8. HashSet原理、TreeSet
  9. ubuntu安装包常用下载地址
  10. R语言实战应用精讲50篇(十七)--使用R语言实现时间序列分析
  11. 在gitee码云上搭建一个网站
  12. 采购人必须明白的八大发展趋势及原则
  13. 如何防止局域网病毒春风吹又生--之一
  14. 跨时钟域问题(CDC)
  15. 操作系统课程项目 OS project —— Pintos from Project 1 to Project 3
  16. 论文复现—1—A Simple yet Effective Relation Information Guided Approach for Few-Shot Relation Extraction
  17. 【记录】螺纹连接与螺旋传动
  18. 在x86汇编中将寄存器设置为零的最佳方法是什么:xor,mov或?
  19. 【CodeForces】Educational Codeforces Round 118 (Rated for Div. 2)【A-C】
  20. IBM MessageBroker笔记系列(一)

热门文章

  1. rssi室内定位算法原理_基于RSSI的室内定位算法
  2. C盘快满了,处理一下pagefile.sys文件和hiberfil.sys文件
  3. 数据分析进阶-Excel绘制分段折线图
  4. HTML简易自适应布局
  5. 资源池(数据库连接池,内存池,线程池)
  6. win10专业版有必要吗_Win10有哪些版本 Win10各版本有什么区别【区别介绍】
  7. 免费视频文件生成视频二维码的方式详解
  8. Redis写副本内存不够
  9. Element中时间校验:结束时间大于开始时间
  10. 互联网日报 | 5月26日 星期三 | 华为鸿蒙操作系统6月2日发布;特斯拉已在中国建立数据中心;百度发起“高考+”计划...