【一些有趣的问题】06,进制转换

ped-Yc Lv2

以下语句会如何输出?

1
2
3
4
5
022 - 017
// 3,18 - 15 = 3

018 - 045
// -19,18 - 37 = -19

在 JS 中,在 Number 类型前加 0 会转换为 8 进制,如果原来的值位上有大于 8 的数,则不会进行转换。

在 JS 中,有几种方法来进行进制转换,但只能通过 10 进制中转,即 10 进制转其他进制或者其他进制转 10 进制。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 0x 表示十六进制,但是 js 会强制转换为十进制来运算,0xa == 10
var a = 0xa;
// 0 开头表示八进制,同样强制转换为十进制来运算 010 = 8
var b = 010;

// Number.parseInt 方法把字符串(只能由字母和数字组成)由低进制转高进制,如二进制转八进制,但是八进制不能转二进制,radix 表示进制,取值 2~36,返回一个字符串。
Number.parseInt(string,radix)
Number.parseInt('0101',2) // 5
Number.parseInt('0101',8) // 65

// Number.toString 方法将十进制数字转换为任意进制的字符串形式,同样,radix 表示进制,取值 2~36
Number.toString(radix)
(10).toString(2) //"1010" 转 2 进制
(10).toString(8) //"12" 转 8 进制
(10).toString(16) //"a" 转 16 进制
(1000).toString(36) //"rs" 转 36 进制
  • 标题: 【一些有趣的问题】06,进制转换
  • 作者: ped-Yc
  • 创建于 : 2021-03-27 14:15:54
  • 更新于 : 2024-09-11 16:35:08
  • 链接: https://ped-yc.github.io/2021/03/27/someInterestingQuestions06/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
目录
【一些有趣的问题】06,进制转换