0
我需要使用十六進制編碼對JavaScript字符串進行調整(混淆)。如何使用十六進制轉義調整JavaScript字符串?
的源代碼:
var a = 'a';
受損代碼:
var a = '\x61';
這是很容易的字符串轉換爲十六進制值:
var map = {
'\b': '\\b',
'\f': '\\f',
'\n': '\\n',
'\r': '\\r',
'\t': '\\t',
};
var hex = function (str) {
var result = '';
for (var i = 0, l = str.length; i < l; i++) {
var char = str[i];
if (map[char]) {
result += map[char];
} else if ('\\' == char) {
result += '\\' + str[++i];
} else {
result += '\\x' + str.charCodeAt(i).toString(16);
}
}
return result;
};
但當我這個字符串添加到輸出文件我得到:
var a = '\\x61';
P.S.我使用esprima/escodegen/estraverse與AST一起工作。
請參閱如何將字符串轉換在這裏:http://stackoverflow.com/questions/21647928/javascript-unicode-string-to -hex –
注意'\ x ??'是一個單字節字符,而'\ u ????'是一個unicode字符。使用後者可能更安全。 –
這個版本可能更接近你所需要的:https://gist.github.com/mathiasbynens/1243213 –