JavaScript实现字符串与十六进制相互转换
作者:桌面漫游时间:2026-10-29 12:31:52浏览:310
本文介绍JavaScript中字符串与十六进制表示字符串的相互转换方法。通过示例代码展示如何将普通字符串转换为十六进制,以及将十六进制还原为原始字符串,适用于处理SQL注入和XSS攻击中常见的十六进制编码场景。
字符串与十六进制转换方法
本文分享一种使用JavaScript实现字符串与十六进制表示字符串之间相互转换的方法,供读者参考。
编写此功能的背景在于,SQL注入和跨站脚本(XSS)攻击中常涉及十六进制编码的字符串。例如执行语句SELECT CONCAT(0x68656c6c6f);时,系统会解析并返回hello。
转换工具实现代码
<!DOCTYPE html>
<html>
<head>
<title>Hex-Char Bi-Converter</title>
</head>
<body>
<div class="mainContainer">
<label for="from" id="fromLabel">String</label>
<input type="text" name="from" id="from" />
<input type="button" name="exchange" id="exchange" value="<=>" />
<label for="to" id="toLabel">Hex</label>
<input type="text" name="to" id="to" />
<input type="button" name="convert" id="convert" value="Convert" />
</div>
<script type="text/javascript" src="js/jquery-1.9.1.min.js"></script>
<script type="text/javascript">
var curMode = 0; // curMode: 0 represents String to Hex, 1 from Hex to String
var fromToLabelArray = ["Hex", "String"];
$(function() {
$("#convert").click(function() {
var fromVal = $("#from").val();
var toVal =
curMode === 0
?
strToHexCharCode(fromVal)
:
hexCharCodeToStr(fromVal);
$("#to").val(toVal);
});
$("#exchange").click(function() {
$("#fromLabel").text(fromToLabelArray[curMode]);
$("#toLabel").text(fromToLabelArray[1-curMode]);
curMode = 1 - curMode;
});
});
function strToHexCharCode(str) {
if(str === "")
return "";
var hexCharCode = [];
hexCharCode.push("0x");
for(var i = 0; i < str.length; i++) {
hexCharCode.push((str.charCodeAt(i)).toString(16));
}
return hexCharCode.join("");
}
function hexCharCodeToStr(hexCharCodeStr) {
var trimedStr = hexCharCodeStr.trim();
var rawStr =
trimedStr.substr(0,2).toLowerCase() === "0x"
?
trimedStr.substr(2)
:
trimedStr;
var len = rawStr.length;
if(len % 2 !== 0) {
alert("Illegal Format ASCII Code!");
return "";
}
var curCharCode;
var resultStr = [];
for(var i = 0; i < len;i = i + 2) {
curCharCode = parseInt(rawStr.substr(i, 2), 16); // ASCII Code Value
resultStr.push(String.fromCharCode(curCharCode));
}
return resultStr.join("");
}
</script>
</body>
</html>
希望上述内容能对各位的JavaScript编程工作提供实际帮助。
作者最新文章
Mock.js 拦截失效或数据格式错误的常见原因及排查
2026-11-05 10:11:59
Java和JavaScript名字像但没关系:辨析Java、JavaWeb与JS
2026-11-04 09:30:54
CodePen、JSFiddle与RunJS对比:哪款JS在线运行工具更适合你?
2026-11-03 16:46:57
JS 统计图渲染空白或报错怎么排查?常见问题解决指南
2026-11-03 09:49:40
flv.js 常见报错 MediaError 与解码失败排查指南
2026-11-02 10:29:29
