在javascript中解析十六进制文字

时间:2012-04-26 02:07:05

标签: javascript parsing hex

嘿大家快速提问,我知道这在javascript中听起来很奇怪,但我很好用。我需要能够以这样的方式解析在textarea中传递的字符串,以便转义十六进制文字“\ x41”或者处理的任何字符串不是四个字符'\''x''4''1'而是作为'A'例如:

var anA = "\x41";
console.log(anA); //emits "A"
var stringToParse = $(#someTextArea).val(); //using jquery for ease not a req
//lets say that "someTextArea" contains "\x41"
console.log(stringToParse); // equals "\" "x" "4" "1" -- not what i want
console.log(new String(stringToParse)); same as last
console.log(""+stringToParse); still doesnt work
console.log(stringToParse.toString()); failz all over (same result)

我希望能够让stringToParse包含“A”而不是“\ x41”...除了正则表达式之外的任何想法?我会采用正则表达式,我想,我只是想让javascript做我的出价:)

2 个答案:

答案 0 :(得分:6)

String.prototype.parseHex = function(){
    return this.replace(/\\x([a-fA-F0-9]{2})/g, function(a,b){
        return String.fromCharCode(parseInt(b,16));
    });
};

并且在实践中:

var v = $('#foo').val();
console.log(v);
console.log(v.parseHex());

答案 1 :(得分:1)

我想出来虽然它有点hacky并且我使用eval :( ...如果有人有更好的方式让我知道:

stringToParse = stringToParse.toSource().replace("\\x", "\x");
stringToParse = eval(stringToParse);
console.log(stringToParse);

主要是我需要这个来解析混合字符串...就像在

中混合了十六进制的字符串文字一样