动态十六进制转义序列

时间:2018-12-31 18:11:02

标签: javascript

我正在将json转换为十六进制,我想与\ x串联

示例: 我有这个->

var myString = '"131';

我想要这个->

var HardCodeString = "\x22\x31\x33\x31" // console.log prints -> "131

当我将字符串设为文字时,它将创建四字节的字符串"131

但是当我创建一个循环以使用动态选择的十六进制值创建此字符串时,就像这样

function ascii_to_hexa(str) {

    var arr1 = [];
    for (var n = 0, l = str.length; n < l; n ++) {
        var hex = "\\x" + Number(str.charCodeAt(n)).toString(16);
        arr1.push(hex);
    }
    return arr1.join('');
}

var newString = ascii_to_hexa('"131');

看起来像工作,但不喜欢!

如果我将控制台日志添加到newString,我可以看到:

'\x22\x31\x33\x31'

如果尝试验证同样发生

// should be equal, but not
if(HardCodeString == newString) {
// do something
}

1 个答案:

答案 0 :(得分:1)

希望此示例对您有帮助

var hex = {
            "\"": '\x22',
            "{": '\x7B',
            "}": '\x7D',
            "A": '\x41',
            "B": '\x42',
            "C": '\x43',
            "D": '\x44',
            "0": '\x30',
            "1": '\x31',
            "3": '\x32',
            "2": '\x33'
        };

        function str_to_hex(str) {
            var res = '';
            for (var n = 0, l = str.length; n < l; n++) {
                res += hex[str[n]];
            }
            return res;
        }
        var str = '\"131';
        var res = str_to_hex(str);
        console.log(res); 

请询问是否有疑问。