问题描述
我需要将一个字符串中的所有字符显示为十六进制格式'\ xHH'。以下是我最近尝试的代码,我只能将第一个字符串转换为十六进制格式。
for(i=0;i<inputString.length;i++){
if(inputString.charat(i)<256){
inputString.replace(inputString .charat(i),'\\x'+inputString.charCodeAt(i).toString(16));
}
}
return inputString;
解决方法
您的问题可能是在if
条件下,因为您正在将char与256
而不是char代码进行比较,所以您可能想要:
if(inputString.charCodeAt(i)<256) // instead of inputString.charAt(i)<256
要获得更多功能,可以使用以下方法:
string
.split("")
.filter(c => c.charCodeAt(0) < 256)
.map(c => '\\x' + c.charCodeAt(0).toString(16))
.join("")
let string = "something";
// filtering out the ones greater than 256
console.log(
string
.split("")
.filter(c => c.charCodeAt(0) < 256)
.map(c => '\\x' + c.charCodeAt(0).toString(16))
.join("")
);
// not filtering out the ones greater than 256
console.log(
string
.split("")
.map(c => (c.charCodeAt(0) < 256 ? '\\x' + c.charCodeAt(0).toString(16) : c))
.join("")
);