假设我有一个十六进制,例如
"0xdc"
,如何在JS中将这个十六进制string
转换为十六进制Number
类型?
实际上只是丢失了引号。
Number()
构造函数和parseInt()
只是将其转换为0到255之间的整数,我只想要0xdc
。
编辑:
为了让我的观点更清楚: 我想从
"0xdc"
(类型为 String
)到 0xdc
(类型为 Number
)
可以使用
Number
函数,该函数将字符串按照一定的格式解析为数字。
console.log(Number("0xdc"));
JavaScript 使用一些符号来识别数字格式,例如 -
0x
= 十六进制0b
= 二进制0o
= 八进制如果要将字符串转换为十六进制表示形式,可以转换为以 16 为基数的数字。
parseInt("0xdc", 16) // gives you the number 220
TL;博士
@dhaker 的回答
parseInt(Number("0xdc"), 10)
正确。
数字
0xdc
和 220
在 javascript 中以相同的方式表示
所以
0xdc == 220
将返回 true。
前缀 0x
用于告诉 javascript 该数字是 hex
所以无论您经过
220
,您都可以安全地通过0xdc
,反之亦然
数字始终以 10 为基数显示,除非另有说明。
如果您想将其打印为字符串,则'0x' + Number(220).toString(16)
给出'0xdc'
。
简而言之
parseInt('0x' + Number(220).toString(16),16) => 220