十六进制转十进制公式

Hexadecimal to decimal conversion formula

来自本书 《Java编程入门,综合版第10版-Daniel Liang》第6章,第217页。

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

hn * 16n + hn-1 * 16n-1 + hn-2 * 16n-2 + ... + h2 * 162 + h1 * 161 + h0 * 160

For example, the hex number AB8C is

10 * 163 + 11 * 162 + 8 * 161 + 12 * 160 = 43916

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

hn * 16n + hn-1 * 16n-1 + hn-2 * 16n-2 +

为什么减去十六进制数和幂? 在给定的示例中,减法没有完成,那它是做什么用的?

感谢您的帮助。

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

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

减法在示例中完成的,在指数中:n是十六进制数字中的位数减一。例如,对于 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 在每个循环中。