Javascript \x escaping

10,204

If you have a string that you want escaped, you can use String.prototype.charCodeAt()

If you have the code with escapes, you can just evaluate them to get the original string. If it's a string with literal escapes, you can use String.fromCharCode()

  • If you have '\x32\x20\x60\x78\x6e\x7a\x9c\x89' and want "2 `xnz" then

      '\x32\x20\x60\x78\x6e\x7a\x9c\x89' == "2 `xnz"
    
  • If you have '\\x32\\x20\\x60\\x78\\x6e\\x7a\\x9c\\x89' which is a literal string with the value \x32\x20\x60\x78\x6e\x7a\x9c\x89 then you can parse it by passing the decimal value of each pair of hex digits to String.prototype.fromCharCode()

      '\\x32\\x20\\x60\\x78\\x6e\\x7a\\x9c\\x89'.replace(/\\x([0-9a-f]{2})/ig, function(_, pair) {
        return String.fromCharCode(parseInt(pair, 16));
      })
    

    Alternatively, eval is an option if you can be sure of the safety of the input and performance isn't important1.

      eval('"\\x32\\x20\\x60\\x78\\x6e\\x7a\\x9c\\x89"')
    

    Note the " nested in the ' surrounding the input string.

    If you know it's a program, and it's from a trusted source, you can eval the string directly, which won't give you the ASCII, but will execute the program itself.

      eval('\\x32\\x20\\x60\\x78\\x6e\\x7a\\x9c\\x89')
    

    Note that the input you provided is not a program and the eval call fails.

  • If you have "2 `xnz" and want '\x32\x20\x60\x78\x6e\x7a\x9c\x89' then

      "2 `xnz".split('').map(function(e) {
        return '\\x' + e.charCodeAt(0).toString(16);
      }).join('')
    
Share:
10,204
HarryJamesPotter27
Author by

HarryJamesPotter27

for (var c = 0; c < INFINITY; c++){ var coding = AWESOME; };

Updated on July 25, 2022

Comments

  • HarryJamesPotter27
    HarryJamesPotter27 almost 2 years

    I've seen a few other programs that have something like this:

    var string = '\x32\x20\x60\x78\x6e\x7a\x9c\x89';
    

    And I had to try to fiddle with the numbers and letters, to find the text I wanted to display.
    I'm wondering if there is a function to find the \x escape of a string, like string.toUpperCase() in JS. I'm using JS, but it will be okay for me to use other programming languages to find the ASCII for \x.

  • HarryJamesPotter27
    HarryJamesPotter27 over 8 years
    Thank you! I'll try it out.