如何使用JavaScript转换十六进制值预期输出

7nbnzgx9  于 2023-01-16  发布在  Java
关注(0)|答案(3)|浏览(97)

我试了很多方法,但都没有达到预期的效果.
输入:04:3d:54:a2:68:61:80
预期产出:01193333618139520
在JS里我该怎么做呢?

const value = `04:3d:54:a2:68:61:80`
const barcode = parseInt(value.replace(':', ''), 16)
console.log(barcode) // 1085
nsc4cvqm

nsc4cvqm1#

问题是您使用的是replace而不是replaceAll

const value = `04:3d:54:a2:68:61:80`
const barcode = parseInt(value.replaceAll(':', ''), 16)
console.log(barcode)

正如Lian所建议的,您也可以使用replace(/:/g, '')来实现这一点
从而获得更好的浏览器兼容性

const value = `04:3d:54:a2:68:61:80`
const barcode = parseInt(value.replace(/:/g, ''), 16)
console.log(barcode)
avwztpqn

avwztpqn2#

首先删除冒号,然后使用parseInt(myHex,16)。

const myHex = '04:3d:54:a2:68:61:80';

function hexToDecimal(hexadecimal) {
  return parseInt(hexadecimal.replaceAll(':', ''), 16);
}

console.log(hexToDecimal(myHex));
xwmevbvl

xwmevbvl3#

使用parseInt函数,将输入作为第一个参数传递,将16(因为十六进制是以16为基数的)作为第二个参数传递。

let input = '04:3d:54:a2:68:61:80';
const inputParsed = parseInt(input.replace(/:/g, ''), 16); // 1193333618139520

如果出于某种原因需要前导零,可以执行以下操作:

const inputParsedStr = `${inputParsed.toString().startsWith('0') ? '' : '0'}${inputParsed}`; // '01193333618139520'

相关问题