如何在JS中将字符串类型的十六进制转换为数字?

时间:2018-06-24 11:26:27

标签: javascript hex byte

假设我有一个十六进制,例如"0xdc",如何在JS中将该十六进制string转换为十六进制Number类型?

从字面上看只是引号。 Number()构造函数和parseInt()刚刚将其转换为0到255之间的整数,我只想要0xdc

编辑:

为了使我的观点更加清楚: 我想从"0xdc"(类型为String)到0xdc(类型为Number

2 个答案:

答案 0 :(得分:2)

您可以先使用Number构造函数,然后使用ParseInt转换为基数10

console.log(parseInt(Number("0xdc"), 10));

JavaScript使用一些符号来识别数字格式,例如-

  1. 0x =十六进制
  2. 0b =二进制
  3. 0o =八进制

所以您无法拥有所需的东西。

答案 1 :(得分:2)

TL; DR

@dhaker的答案

parseInt(Number("0xdc"), 10)是正确的。

内存中的数字表示形式

在JavaScript中,数字0xdc220的表示方式相同

所以 0xdc == 220将返回true。 前缀0x用于告诉javascript这个数字是hex

因此,无论您在哪里传递220,都可以安全地传递0xdc,反之亦然

字符串格式

除非另有说明,否则数字始终以10为底。

'0x' + Number(220).toString(16)给出'0xdc',如果您想将其打印为字符串。


简而言之

parseInt('0x' + Number(220).toString(16),16) => 220