Javascript \ x转义

Har*_*r27 5 javascript string processing ascii escaping

我看过其他一些具有以下内容的程序:

var string = '\x32\x20\x60\x78\x6e\x7a\x9c\x89';
Run Code Online (Sandbox Code Playgroud)

而且我不得不尝试弄乱数字和字母,以找到我想要显示的文本。
我想知道是否有一个函数来查找\x字符串的转义,例如string.toUpperCase()在JS中。我正在 JS,但是可以使用其他编程语言来查找ASCII \x

arc*_*rty 5

如果您有想要转义的字符串,则可以使用 String.prototype.charCodeAt()

如果您的代码带有转义符,则可以对其求值以获取原始字符串。如果它是带有文字转义符的字符串,则可以使用String.fromCharCode()

  • 如果你有'\x32\x20\x60\x78\x6e\x7a\x9c\x89',并希望"2 `xnz"

    '\x32\x20\x60\x78\x6e\x7a\x9c\x89' == "2 `xnz"
    
    Run Code Online (Sandbox Code Playgroud)
  • 如果您有'\\x32\\x20\\x60\\x78\\x6e\\x7a\\x9c\\x89'一个带有值的文字字符串,\x32\x20\x60\x78\x6e\x7a\x9c\x89则可以通过将每对十六进制数字的十进制值传递给String.prototype.fromCharCode()

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

    或者,eval如果您可以确定输入的安全性并且性能并不重要1,则可以使用此选项。

    eval('"\\x32\\x20\\x60\\x78\\x6e\\x7a\\x9c\\x89"')
    
    Run Code Online (Sandbox Code Playgroud)

    注意"嵌套在'输入字符串周围。

    如果您知道它是一个程序,并且来自受信任的来源,则可以eval直接输入字符串,它不会提供ASCII码,但可以执行程序本身。

    eval('\\x32\\x20\\x60\\x78\\x6e\\x7a\\x9c\\x89')
    
    Run Code Online (Sandbox Code Playgroud)

    请注意,您提供的输入不是程序,并且eval调用失败。

  • 如果你有"2 `xnz",并希望'\x32\x20\x60\x78\x6e\x7a\x9c\x89'

    "2 `xnz".split('').map(function(e) {
      return '\\x' + e.charCodeAt(0).toString(16);
    }).join('')
    
    Run Code Online (Sandbox Code Playgroud)