十六进制到十进制转换公式

时间:2017-03-04 08:26:28

标签: java hex decimal formula

从书中 “Java编程简介,综合版本第10版 - Daniel Liang”第6章,第217页。

从下面的文字中我无法理解十六进制到十进制转换的公式。

  

h n * 16 n + h n-1 * 16 n-1 + h n-2 * 16 n-2 + ... + h 2 * 16 2 + h 1 * 16 1 + h 0 * 16 0

     

例如,十六进制数AB8C是

     

10 * 16 3 + 11 * 16 2 + 8 * 16 1 + 12 * 16 0 = 43916

我理解公式的第二部分以及给定示例中的答案是如何得出的,而不是第一部分

  

h n * 16 n + h n-1 * 16 n-1 + h n-2 * 16 n-2 +

为什么减去十六进制数和幂? 在给出的示例中,没有进行减法,那么它的用途是什么?

感谢您的帮助。

鉴于T.J,我不确定我的问题是什么意思不清楚。克劳德能够提供一个解决我的困惑的答案。 我认为问题的措辞非常清楚地阐明了我的问题。 我是新来的,所以我可能会遗漏一些明显的东西? 我应该接受答案吗?

没关系,只是注意到答案附近的刻度线。

1 个答案:

答案 0 :(得分:1)

减法 在示例中完成,在指数中: n 是十六进制数中的位数减1。因此,例如,对于AB8C, n 是3.公式所说的是:

  • 您将A乘以16乘以 n ,例如0xA * 16^3
  • 您将B乘以6乘以 n-1 ,例如0xB * 16^2
  • 您将8乘以6乘以 n-2 ,例如0x8 * 16^1
  • 您将C乘以6乘以 n-3 ,例如0xC * 16^0
  • 您将这些结果添加到一起

因此,如果您正在编写将十六进制转换为十进制的代码,则需要在每个循环中使用 n 和循环,并递减 n