16进制编辑器 16进制

简介所谓进制,就是逢几进一,r 进制就是逢 r 进一,就是一种计数方法 。例如* 一分钟六十秒,逢六十进一,就是六十进制;* 一天二十四小时,逢二十四进一,就是二十四进制;* 一星期七天,逢七进一,就是七进制;* 一年十二个月,逢十二进一,就是十二进制;* 小学数学是逢十进一,就是十进制;* 而计算机中的数据只有 0 和 1,逢二进一,就是二进制 。

注意* 计算机只能识别二进制,人类最习惯使用的是十进制 。* 八进制数前面要加0(注意是数字零而不是字母 o),十六进制数前面要加0x或0X,而十进制前面什么都不加 。

定义十进制:十进制为逢十进一,它只有 0、1、2、3、4、5、6、7、8、9 这十个基数 。逢十进一的意思就是:9 再加 1 就变为 10,即向前进了一位,原来的 9 变成 0;二进制:二进制为逢二进一,它只有 0 和 1 两个基数 。逢二进一的意思就是:* 1 再加 1 就变成 10,即向前进了一位,原来的 1 变成 0;* 再加 1 就是 11;* 再加 1 又逢二,再往前进一位,进一位后第二个 1 又逢二再进位,就是 100 了;* 再加 1 变成 101,再加 1 变成 110,再加 1 变成 111,再加 1 变成 1000……八进制:八进制就是逢八进一,它只有 0、1、2、3、4、5、6、7 这八个基数 。逢八进一的意思就是:* 7 再加 1 就变成 10,即向前进了一位,原来的 7 变成 0;* 11 再加 7 就变成了 20,即向前进了一位,原来的 1(11中的个位数) 变成 0;十六进制:十六进制就是逢十六进一,它有 0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F 这十六个基数 。注意:字母不区分大小写逢十六进一的意思就是:* f 再加 1 就变成 10,即向前进了一位,原来的 f 变成 0;* 11 再加 f 就变成了 20,即向前进了一位,原来的 1(11中的个位数) 变成 0;总结:r 进制有 r 个基数,而且基数里面最大的是 r - 1,因为基数都是从 0 开始 。不同位数的值达到r时,就向前进1,原位数清0 。二进制:十进制:八进制:十六进制:0 + 1 =》10 + 1 = 10 + 1 = 10 + 1 = 11 + 1 =》 101 + 1 = 21 + 1 = 21 + 1 = 210 + 1 =》 112 + 1 = 32 + 1 = 32 + 1 = 311 + 1 =》 1003 + 1 = 43 + 1 = 43 + 1 = 4100 + 1 =》 1014 + 1 = 54 + 1 = 54 + 1 = 5101 + 1 =》 1105 + 1 = 65 + 1 = 65 + 1 = 6110 + 1 =》 1116 + 1 = 76 + 1 = 76 + 1 = 7111 + 1 =》 10007 + 1 = 87 + 1 = 107 + 1 = 81000 + 1 =》 10018 + 1 = 910 + 1 = 118 + 1 = 91001 + 1 =》 10109 + 1 = 1011 + 1 = 129 + 1 = a1010 + 1 =》 101110 + 1 = 1112 + 1 = 13a + 1 = b1011 + 1 =》 110011 + 1 = 1213 + 1 = 14b + 1 = c1100 + 1 =》 110112 + 1 = 1314 + 1 = 15c + 1 = d1101 + 1 =》 111013 + 1 = 1415 + 1 = 16d + 1 = e1110 + 1 =》 111114 + 1 = 1516 + 1 = 17e + 1 = f1111 + 1 =》 1000015 + 1 = 1617 + 1 = 20f + 1 = 10M进制转换N进制的函数r进制转换十进制:parseInt(str,radix)string :如果string不是字符串,它底层将通过使用 ToString 抽象操作 将其转成字符串radix:范围在 [2,36]之间,表示当前 string 表示为几进制,在 radix 为 undefined,或者基数为 0 或者没有指定的情况下,JavaScript 作如下处理:* 如果字符串 string 以"0x"或者"0X"开头, 则基数是16 (16进制)* 如果字符串 string 以其它任何值开头,则基数是10 (十进制)* 其他永远都要明确给出radix参数的值* 结果返回值为Number类型注意:如果第一个参数的第一个字符 跟 第二个参数的进制类型不相符,parseInt返回NaN 。可以调用isNaN 来判断 parseInt 是否返回 NaNeg: parseInt('321',2)// NaN'321' 第一个字符非 0,1 这两个基数eg: parseInt('321',37)// NaNradix 超过了区间[2,36]eg: isNaN(parseInt(0101,2))// true(0101).toString() => 65十进制转换r进制:(Number).toString(radix)Number:为一个十进制的数值,当然你也可以写一个16进制的数值,注意如果直接radix:范围在 [2,36]之间,表示将 Number 转换成几进制,如果未指定 radix 参数,则默认值为 10;如果 toString() 的 radix 参数不在 2 到 36 之间,将会抛出一个 RangeError 。为什么 2.toString(radix) 会报错呢?* 那是因为第一个点会被解析成小数点的点,如:2.0,后面的0省略了就是2.,因为2..toString(radix)才能正常执行 。* 所以正常写法都是(2).toString(radix)最终JavaScript函数: function radixTransform(num,from,to){num = typeof(num) === 'string' ? num : String(num)if ((from > 36 && from < 2) || (to > 36 && to < 2)) throw new Error('进制参数取值区间在[2,36]')let result = parseInt(num,from)if (typeof(result) === 'number' && isNaN(result)) throw new Error('转换值错误')return result.toString(to)}

进制之间的对应关系

秒懂生活扩展阅读