将值小于256的字符串中的所有字符转换为十六进制格式

问题描述

我需要将一个字符串中的所有字符显示为十六进制格式'\ 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("")
);