我正在尝试将Unicode字符串转换为javascript中的十六进制表示形式。
这就是我所拥有的:
function convertFromHex(hex) { var hex = hex.toString();//force conversion var str = ''; for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16)); return str; } function convertToHex(str) { var hex = ''; for(var i=0;i<str.length;i++) { hex += ''+str.charCodeAt(i).toString(16); } return hex; }
但是如果对像中文这样的unicode字符失败的话;
输入:汉字
输出:ªo“ [W
有任何想法吗?可以用javascript完成吗?
请记住,JavaScript代码单元为16位宽。因此,十六进制字符串形式将是每个代码单位4位数字。
用法:
var str = "\u6f22\u5b57"; // "\u6f22\u5b57" === "漢字" alert(str.hexEncode().hexDecode());
字符串到十六进制形式:
String.prototype.hexEncode = function(){ var hex, i; var result = ""; for (i=0; i<this.length; i++) { hex = this.charCodeAt(i).toString(16); result += ("000"+hex).slice(-4); } return result }
再次回来:
String.prototype.hexDecode = function(){ var j; var hexes = this.match(/.{1,4}/g) || []; var back = ""; for(j = 0; j<hexes.length; j++) { back += String.fromCharCode(parseInt(hexes[j], 16)); } return back; }