0%

数字进制转化

罗列常用语言中的数字转化方法

Python

Python 中已经集成了很多用来做这个事情的内部方法,都不需要引入额外的包,很方便。主要集中在 str.format() 和其他一些内置函数比如 int(), hex () 等

str.format 转化格式如下

1
2
3
4
5
6
7
8
format_spec     ::=  [[fill]align][sign][#][0][width][grouping_option][.precision][type]
fill ::= <any character>
align ::= "<" | ">" | "=" | "^"
sign ::= "+" | "-" | " "
width ::= digit+
grouping_option ::= "_" | ","
precision ::= digit+
type ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"

一些例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 十进制 8 转化成二进制,8位宽,左对齐,空位补 -, format 里面的只能是十进制的数
'{:-<8b}'.format(8)
# '1000----'

# 0xff 转化成二进制,可以先把十六进制转成十进制,再转成二进制, 0x 可以省略
'{:b}'.format(int('0xff', 16))
# '11111111'

# bin 函数也可以用来做二进制转化,基数是10
bin(8)
# '0b1000'

# str.format 加上 # 可以变成和 bin 一样的效果
'{:#b}'.format(int('0xff', 16))
# '0b11111111'

# 内置函数 format 也可以实现和 str.format 一样的功能
format(255, '#b')
# '0b11111111'

# 再介绍一种 format 的简写形式
f'{255:#b}'
# '0b11111111'

Reference