说说JS里进制的问题

先说下好久不见


今天在转换进制方面上遇到了麻烦。本来想将 'helloWorld' 这字符串转换成 二进制的ASCII码(当然是字符串),然后发现可能得自己写个进制转换的函数了。

于是我很懒又很笨,想找下有没有原生转化方法。找了半天自己摸索出来了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
var str = 'helloWorld';
/* 字符串转成二进制形式的ASCII码 */
function Str2Bin(str){
return Array.prototype.slice.apply(str).map(function (char){
return char.charCodeAt().toString(2);
}).join('');
}
/* 截取二进制字符串,抽取出 width 位作为参数来调用函数func */
function getBinCharsByWidth(func, str, width){
var binChar = str.substr(0, width);
func(binChar);
binChar && getBinCharsByWidth(func, str.slice(width), width);
}
/* 二进制字符串转字符串 */
function Bin2Str(bin, width){
var get = {
'str': '',
'getStr': function (charCode){
this.str += String.fromCharCode(parseInt(charCode, 2));
}
};
getBinCharsByWidth(get.getStr.bind(get), bin, width);
return get.str;
}
Str2Bin(str);
//1101000110010111011001101100110111110101111110010110111111011001100100
Bin2Str(Str2Bin(str), 7);
//helloWorld

好了我先说到这儿了,以后再来背锅……(其实是去吃饭,顺便祝我生日快乐^_^


各位饭后好,我回来了

String.prototype.charCodeAt 可以将字符转为ASCII码

String.fromCharCode 可以将十进制的ASCII码转为字符

(不算说好的进制吗,怎么是这个)

如果你看得懂代码,就能明白的, Number.prototype.toString 就是了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var 二进制 = 2;
var 八进制 = 8;
var 十六进制 = 16;
'A'.charCodeAt().toString(二进制); //1000001
'A'.charCodeAt().toString(八进制); //101
'A'.charCodeAt().toString(十六进制); //41
(999).toString(二进制); //1111100111
(999).toString(八进制); //1747
(999).toString(十六进制); //3E7

好了,貌似补完了

...
按照12进制来算的话,我今天17岁了
...
蛋糕一年比一年难吃
...
说起来人生也过了 25% 了
...