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 processingJS, but it will be okay for me to use other programming languages to find the ASCII for \x
.
To use a special character as a regular one, prepend it with a backslash: \. . That's also called “escaping a character”.
JavaScript escape() The escape() function is deprecated. Use encodeURI() or encodeURIComponent() instead.
Any character with a character code lower than 256 (i.e. any character in the extended ASCII range) can be escaped using its hex-encoded character code, prefixed with \x . (Note that this is the same range of characters that can be escaped through octal escapes.)
An escape character enables you to output characters you wouldn't normally be able to, usually because the browser will interpret it differently to what you intended. In JavaScript, the backslash ( \ ) is an escape character.
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('')
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With