目录 (づ ̄ 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
![](https://box.kancloud.cn/8c00369f5ad484ef004b3083421bcd4d_504x270.png)