開發過程中,字符串與十六進、二進制之間的相互轉換常常會用到,尤其是涉及到中文的加密時,就需要把中文轉換為十六進制。下面說說具體的轉換方法。
1、字符串轉換為十六進制
主要使用 charCodeAt()方法,此方法返回一個字符的 Unicode 值,該字符位於指定索引位置。
function stringToHex(str){
var val="";
for(var i = 0; i < str.length; i++){
if(val == "")
val = str.charCodeAt(i).toString(16);
else
val += "," + str.charCodeAt(i).toString(16);
}
return val;
}
調用方法:
var str = "abcde";
stringToHex(str);
2、十六進制轉換為字符串
主要使用 fromCharCode()方法,此方法將 Unicode 碼轉換為與之對應的字符。
function hexToString(str){
var val="";
var arr = str.split(",");
for(arr i = 0; i < arr.length; i++){
val += arr[i].fromCharCode(i);
}
return val;
}
調用方法:
var str = "676865";
stringToHex(str);
3、用 parseInt() 方法轉換
parseInt(string, radix) 方法只能轉換 String 類型,對其它類型都返回 NaN(非數字)。string 表示待轉換的字符,radix 表示要轉為的進制,值介於 2 ~ 36 之間。
parseInt("bc",16); //表示把字符串bc轉換為16進制,結果:188
parseInt("10",8); //表示把字符串10轉換為8進制,結果:8
parseInt("10",2); //表示把字符串10轉換為2進制,結果:2
var str = "abcdeghijklmnopqrstuvwxyz";
console.log(stringToHex(str));
str="http://www.qq.com";
len=str.length;
arr=[];
for(var i=0;i<len;i++){
arr.push(str.charCodeAt(i).toString(16));
}
console.log("\\x"+arr.join("\\x"));