d = {0:'c', 1:'d', 2:'e', 3: 'f'}
x, y, z = (0, 1, 3)
print [v for (k,v) in d.items() if x==k or y==k or z==k]
Если у вас есть строка, которую вы хотите экранировать, вы можете использовать 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('')