说说JS里进制的问题

首先说下好久不见


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

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


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 就是了


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% 了
...