java - 将数字的十六进制表示形式转换为十进制值的有效方法

标签 java hex decimal

我有一个 byte[5] 数组,它表示打印为十六进制字符串时的十进制数。一个字节可以存储两个数字,不使用十六进制字符。 例如

[0x11,0x45,0x34,0x31,0x21] -> 1145343121.

在 Java 中是否有更有效的方法(可能是一些移位魔法)来转换为除

之外的十进制数
long result = Long.parseLong(byteToHexString(bytes[]));?

反之亦然的高效转换也很有趣......

最佳答案

((a[0]>>>4)*1000000000L + (a[0]&15)*100000000L +
 (a[1]>>>4)*  10000000L + (a[1]&15)*  1000000L +
 (a[2]>>>4)*    100000L + (a[2]&15)*    10000L +
 (a[3]>>>4)*      1000L + (a[3]&15)*      100L +
 (a[4]>>>4)*        10L + (a[4]&15))

关于java - 将数字的十六进制表示形式转换为十进制值的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8205142/

相关文章:

hex - 下面这个键的标准叫什么?

hex - Python - 如何检查字符串是否是十六进制颜色代码

.net - 为什么在设计器中为控件的属性指定数值会导致代码中出现 new Decimal(new int[] {... ?

c# - 如何将十进制属性格式化为货币?

java - 如何在Python中使正在运行的jar程序超时

java - Android - AlarmManager 每 5 秒触发一次,而不是 3 分钟

java - 如何将从串口接收到的字节转换为十六进制?

c# - 从十进制数据在 C# 中创建图像或图形?

java - 如何编写 ANTLR 语法翻译器以返回带有方法的 java 类?

java - 如何隐藏 View 后面的 View