JavaScript具有从Number到String表示形式的本地转换,从2到36的任何基数。
十进制(以10为底)之后最常见的表示形式是十六进制(以16为底),但本节的内容适用于范围内的所有底。
为了将数字从十进制(以10为底)转换为十六进制(以16为底)的字符串表示形式,toString方法可以与radix16一起使用。
// 以10为底的数字 var b10 = 12; // 以16为基数的字符串表示形式 var b16 = b10.toString(16); // "c"
如果所表示的数字是整数,则可以使用进行反操作,parseInt然后再次使用基数16
// 以16为基数的字符串表示形式 var b16 = 'c'; // 以10为底的数字 var b10 = parseInt(b16, 16); // 12
要将任意数字(即非整数)从其String表示形式转换为Number,必须将操作分为两部分;整数部分和小数部分。
let b16 = '3.243f3e0370cdc'; // 分为整数和分数部分 let [i16, f16] = b16.split('.'); // 计算以10为底的整数部分 let i10 = parseInt(i16, 16); // 3 // 计算以10为基数的分数 let f10 = parseInt(f16, 16) / Math.pow(16, f16.length); // 0.14158999999999988 // 将基础的10个零件放在一起以找到数字 let b10 = i10 + f10; // 3.14159
注1:由于可能用不同的基数表示的结果不同可能会导致小的误差,因此请务必小心。之后可能需要执行某种舍入操作。
注意2:由于转换所处环境的准确性和最大值,数字的非常长的表示形式也可能会导致错误。