zhangsanshi / issue-blog

It's a blog rather than issue
0 stars 0 forks source link

2进制8进制16进制转换另一种思路 #15

Open zhangsanshi opened 8 years ago

zhangsanshi commented 8 years ago

可能一般的方法是转成10进制,再进行转换 今天想到一个新的办法, 举一个例子

var map = {
    0: 0,
    1: 1,
    10: 2,
    11: 3,
    100: 4,
    101: 5,
    110: 6,
    111: 7
};
function $2to8 (num) {
    var result = '';
    var tmp = '';
    for (var i = num.length; i >= 0; i = i - 3) {
        tmp = num.substring(i - 3 , i);
        if (tmp) {
            result = map[tmp - 0] + result;
        }

    }
    return result;
}

想法很简单,2进制转8进制,把2进制字符串分成3个一组,换算成8进制,同理16进制 8进制转2进制,则把每一位拆成3位,不足补0即可 随手测试了下,速度还是可以看的:)