字符轉換 Unicode,進制轉換
阿新 • • 發佈:2017-10-27
http ilo ascii hex substr www 進制 cde 位置
charCodeAt()方法,此方法返回一個字符的 Unicode 值,該字符位於指定索引位置。
fromCharCode()方法,此方法將 Unicode 碼轉換為與之對應的字符。
字符轉Unicode碼:
var str="申曉亮"; str.charCodeAt(0);//30003 str.charCodeAt(1);//26195 str.charCodeAt(2);//20142
Unicode碼轉字符:
String.fromCharCode(73,76,79,86,69,85,30003,26195,20142);//"ILOVEU申曉亮"
js:數字轉2,8,10,16進制
var number = 18; //註意數字格式,不加引號. number.toString(2); //轉成2進制 "10010" number.toString(8);//轉成8進制 "22" number.toString(10);//轉成10進制 "18" number.toString(16);//轉成16進制 "12"
js:16進制轉換2,8,10進制
var number = 0x11; //註意數字格式,不加引號. number.toString(2); //轉成2進制 "10001" number.toString(8);//轉成8進制 "21" number.toString(10);//轉成10進制 "17" number.toString(16);//轉成16進制 "11"
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"; str=stringToHex(str);
2、十六進制轉換為字符串(不是很明白)
主要使用 fromCharCode()方法,此方法將 Unicode 碼轉換為與之對應的字符。
function hexToString(str){ var val=""; var arr = str.split(","); for(var 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 = "abcdeghijklmnopqrstuvw"; console.log(stringToHex(str));//61,62,63,64,65,67,68,69,6a,6b,6c,6d,6e,6f,70,71,72,73,74,75,76,77 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(arr.join(","));//68,74,74,70,3a,2f,2f,77,77,77,2e,71,71,2e,63,6f,6d
==========================================================================
另一種方法,還沒有驗證
//字符串轉16進制 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(""); } //16進制轉字符串 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(""); }
字符轉換 Unicode,進制轉換