我尝试了很多方法,但都没有达到预期的效果。
输入: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
问题是您正在使用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)
首先删除冒号,然后使用parseInt(myHex, 16)。
const myHex = '04:3d:54:a2:68:61:80';
function hexToDecimal(hexadecimal) {
return parseInt(hexadecimal.replaceAll(':', ''), 16);
}
console.log(hexToDecimal(myHex));
使用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'