2015-12-03 53 views
2

我見過有這樣的事情還有其它的程序:的Javascript X轉義

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

我不得不嘗試用數字和字母搗鼓,發現我想要顯示的文本。
我想知道是否有一個函數來查找字符串的\x轉義,如JS中的string.toUpperCase()。我使用的是 JS,但使用其他編程語言查找\x的ASCII碼可以。

+0

這些程序可以(也應該)只是使用了'''VAR字符串= '2'XNZ \ x9c \ X89';' '',沒有什麼會有所不同。 – Bergi

+0

這是真的,但直到現在我還沒有習慣,我通常只是輸入字符。 – HarryJamesPotter27

回答

2

如果您有想要逃脫一個字符串,你可以使用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" 
    
  • 如果你有'\\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)); 
    }) 
    

    或者,eval是一個選項,如果您可以確保輸入的安全性和性能並不重要1

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

    注嵌套在圍繞輸入字符串'"

    如果你知道它是一個程序,並且它來自可靠的來源,你可以直接使用eval這個字符串,它不會給你ASCII碼,但會執行程序本身。

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

    請注意,您所提供的輸入不是一個程序和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('') 
    
+0

謝謝!我會嘗試一下。 – HarryJamesPotter27