由于coding gists即将关闭,所以把此代码片搬到博客
js的Number支持直接使用toString转换到最多36进制(0-9a-z),而此函数支持转换到由传入进制表定义的任何进制。
默认进制表为0-9a-zA-Z的62进制
123456789101112131415161718192021222324252627 /*COPYRIGHT luojia@luojia.meMIT LICENSE*/function conv(n,o,t,olist,tlist){//数,原进制,目标进制[,原数所用字符表,目标字符表]var dlist='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',tnum=[],m,negative=((n+='').trim()[0]=='-'),decnum=0;olist||(olist=dlist);tlist||(tlist=dlist);if(negative)n=n.slice(1);for(var i=n.length;i--;)decnum+=olist.indexOf(n[i])*Math.pow(o,n.length-i-1);for(;decnum!=0;tnum.unshift(tlist[m])){m=decnum%t;decnum=Math.floor(decnum/t);}decnum&&tnum.unshift(tlist[decnum]);return (negative?'-':'')+tnum.join('');}conv(1234,10,2) //"10011010010"conv(15,10,16) //"f"conv('ABC',16,10) //"9846"conv(3245670,10,10,null,'零一二三四五六七八九') //"三二四五六七零"conv('①②③',10,2,'〇①②③④⑤⑥⑦⑧⑨') //"1111011"
本文发布于 https://luojia.me
本站文章未经文下加注授权不得拷贝发布。
本博客使用Disqus评论系统,如果看不到评论框,请尝试爬墙。