# 0x01 前言

今天写文章的时候,突然想起用十六进制当做标题序号,于是再记录一下。

# 0x02 十六进制与十进制转换

首先,在十六进制中 1~16 数字代表有:0,1,2,3,4,56,7,8,9,A (10),B (11),C (12),D (13),E (14),F (15)

前位为 0 可以被忽略,例如:

0x10x011
0x0A0xA10

只有前一位有大于 1 的情况才会作计算,如:

0x1A261*16+10

后位为 0 则会使前一位成为进位数:

0xA00==101616+0+0=2560

对于进位来说,当前处于哪位,计算时就需要自身数值乘对应数量 N 的 16N116^N-1 次方

0xAAA==10162+10161+10160==27300xAAA==10*16^2+10*16^1+10*16^0==2730

同理,经常见到的颜色值:0xFFFF 类似

0xFFFF15161616+151616+1516+1565535

这中最大值的情况,计算其实可以简化一下:1641==161616161==6553516^4-1==16*16*16*16-1==65535

# 0x03 二进制与十进制转换

对于二进制转十进制,常用的还是数数。

数二进制中有多少个 1 ,这个 1 所占用的位置 N 作为 2 (N-1) 次方,然后累加起来。

例如:1011=23+21+20=151011=2^3+2^1+2^0=15

例如 4 个字节 容量有多大?

我们知道:

1 个字节有 8 位 0b11111111255
2 个字节有 16 位 0b1111111111111111256256-1=65535
3 个字节有 24 位 0b111111111111111111111111256
256256-1=16777215
4 个字节有 32 位 0b11111111111111111111111111111111256
256256256-1=4294967295

一张 ARGB32 的图片格式就是:

每个通道 8 位 ==255 表示一个颜色,也就是我们常见的 (255,255,255,255) 颜色组合,也即是『原图』。

# 0x04 二进制与十六进制转换

其实很简单...:一位十六进制视为四位二进制

0b1111-->0xf-->15
0x99-->0b10011001
0x88-->0b10001000