目錄 (づ ̄ 3 ̄)づ=>
[TOC]
## toString
```
/**
* toString
* 能讓二進制8進制16進制之間相互轉換
*/
console.log(0b10111000.toString(16)); //b8
console.log(0x123.toString(2)); //100100011
console.log(0123.toString(2)); //1010011
```
>[danger] - 字符串形式的數字不能進行進制轉換,會原樣輸出
> - console.log((10).toString(2)) 10進制轉為其它時必須包一個括號
## parseInt
```
/**
* 能將任意進制轉換為10進制,第二個參數表示要解析的進制是多少進制,默認為10
*/
//使用了0b 0x 這種表示進制的前綴會自動匹配對應進制
console.log(parseInt(0123));
console.log(parseInt(0x123)); //會自動匹配對應進制
//在不使用0b 0x這種進制前綴時,可以手動在第二個參數選擇使用哪種進制解析
console.log(parseInt(100,2)); //4
//但最終解析成的都是十進制表示的數
```
## 進制之間可直接比較
```
0xff > 0b00000001 ? console.log(true):console.log(false);
```
## string_decoder解決亂碼問題
```
/**
* string_decoder
* .write方法
*/
//解決亂碼
let s = require('string_decoder');
let s = new StringDecoder();
console.log(sd.write(buf10));
//write的時候會判斷是不是一個字符,如果是的話就輸出,不是的話則緩存在對象內部,等下次write的時候會把前面緩存的字符加到第二次write時
```
## 如何將一個unicode碼轉換成utf8
```
/**
* 1.如何把一個unicode碼轉成utf8編碼
* 傳進去一個unicode碼,返回一個utf8編碼 萬 4E07
* Unicode符號范圍 | UTF-8編碼方式
(十六進制) | (二進制)
----------------------+---------------------------------------------
0000 0000-0000 007F | 0xxxxxxx
0000 0080-0000 07FF | 110xxxxx 10xxxxxx
0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
**/
function transfer(number) {
const a = parseInt('7f');
const b = parseInt('07ff');
const c = parseInt('8000000ffff');
const d = parseInt('100000010ffff');
const v = parseInt(number);
let bit = v.toString(2);
if(v<=a){
return bit.toString(16);
}else if(v>a&&v<=b){
let arr = ["110", "10"];
arr[1] += bit.substring(bit.length-6);
arr[0] += bit.substring(0,bit.length-6).padStart(5,'0');
return arr.map(item=>parseInt(item,2).toString(16));
} else if(v>b&&v<=c){
let arr = ["1110", "10", "10"];
arr[2] += bit.substring(bit.length-6);
arr[1] += bit.substring(bit.length-12,bit.length-6);
arr[0] += bit.substring(0,bit.length-12).padStart(4,'0');
return arr.map(item=>parseInt(item,2).toString(16));
}else if(v>c&&v<=d){
let arr = ["11110","1110", "10", "10"];
arr[3] += bit.substring(bit.length-6);
arr[2] += bit.substring(bit.length-12,bit.length-6);
arr[1] += bit.substring(bit.length-18,bit.length-12);
arr[0] += bit.substring(0,bit.length-12).padStart(3,'0');
return arr.map(item=>parseInt(item,2).toString(16));
}else{
return new Error('您輸入的數字超過了范圍');
}
}
```
## BOM
