Java - 将无符号的十六进制字符串解析为带符号的长

标签 java hex long-integer

我有一堆十六进制字符串,例如其中一个是:

  d1bc4f7154ac9edb

这是“-3333702275990511909”的十六进制值。这与执行 Long.toHexString("d1bc4f7154ac9edb"); 时得到的十六进制相同;

现在,让我们假设我只能访问十六进制字符串值,仅此而已。这样做:

  Long.parseLong(hexstring, 16);

不起作用,因为它会将其转换为对于 Long 而言太大的不同值。是否可以将这些无符号的十六进制值转换为有符号的长整数?

谢谢!

最佳答案

您可以使用 BigInteger解析它并取回一个long:

long value = new BigInteger("d1bc4f7154ac9edb", 16).longValue();
System.out.println(value); // this outputs -3333702275990511909

关于Java - 将无符号的十六进制字符串解析为带符号的长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5723579/

相关文章:

java - 如何正确使用任何 Java API

java - 数独解算器,让方框指向正确的方 block

C : confusion over a small piece of code - what is '&0x' ?

hex - Python-sns.color_palette输出为Bokeh的十六进制数字

java - 为什么这两个乘法运算会给出不同的结果?

java - 驱动程序可执行文件必须由 webdriver.ie.driver 系统属性设置

java - Java路径如何转换为例如输入流

ruby - 编码的十六进制字符串中的字节数

java - 在Java中通过长整数传递9位数字来发出增量sum=0

python - ValueError : Stop argument for islice() must be None or an integer: 0 <= x <= sys. maxsize 关于主题一致性