假设我有一个由3个字节组成的数字,0x303132 如何将此数字转换为3个字符长的相同值的字符串 - '012' - 这是ASCII中上述每个字节的值? 我知道你可以使用'\ x',但我不想对这个值进行硬编码。
答案 0 :(得分:3)
因此,由于输入是一个十六进制值序列(因此每个都有两个字符),我将使用正则表达式忽略标题(0x)并提取两个(有效)字符,它们进入String.replace
方法的转换函数,它将提取的值从十六进制转换为十进制,然后从十进制值转换为ascii字符
input = "0x303132"
output = input.replace(/(?:0x)?([0-9a-f]{2})/ig, function (match, $1) {
return String.fromCharCode(parseInt($1, 16));
})
console.log(output)

答案 1 :(得分:0)
我的单行功能尝试(没有正则表达式,没有JQuery,没有lodash),v
包含字符串
const s = Array.from(Array((v.length-2)/2).keys()).reduce(
(acc, i) => acc + String.fromCharCode(parseInt(v.slice(2+i*2, 2+(i+1)*2),16)),
""
)
中查看