Jon*_*art 16
十六进制是16的基数,因此我们不是从0到9计数,而是从0到F计数.我们通常将十六进制常量加上前缀0x.从而,
Hex Dec
-------------
0x00 = 0
0x09 = 9
0x0A = 10
0x0F = 15
0x10 = 16
0x200 = 512
Run Code Online (Sandbox Code Playgroud)
字节是计算机上值的典型存储单位,在大多数现代系统中,一个字节包含8位.注意,bit实际上意味着binary digit,因此,我们收集一个字节的最大值为11111111二进制.即0xFF十六进制或255十进制.因此,一个字节可以由最少两个十六进制字符表示.一个典型的4字节int是8个十六进制字符,如0xDEADBEEF.
RGB值通常用3个字节值打包,按顺序为RGB.从而,
R=255 G=0 B=0 => R=0xFF G=0x00 B=0x00 => 0xFF0000 or #FF0000 (html)
R=66 G=0 B=248 => R=0x42 G=0x00 B=0xF8 => 0x4200F8 or #4200F8 (html)
Run Code Online (Sandbox Code Playgroud)
对于我的十六进制计算,我喜欢使用python作为我的计算器:
>>> a = 0x427FB
>>> b = 700
>>> a + b
273079
>>>
>>> hex(a + b)
'0x42ab7'
>>>
>>> bin(a + b)
'0b1000010101010110111'
>>>
Run Code Online (Sandbox Code Playgroud)
对于RGB示例,我可以演示如何使用位移来轻松计算这些值:
>>> R=66
>>> G=0
>>> B=248
>>>
>>> hex( R<<16 | G<<8 | B )
'0x4200f8'
>>>
Run Code Online (Sandbox Code Playgroud)
Base-16(也称为十六进制)表示法很方便,因为您可以将四个位恰好放入一个十六进制数字中,从而使转换为二进制非常容易,但不需要与完整二进制表示法一样多的空间。当您需要以人类可读的形式表示面向位的数据时,这非常有用。
学习十六进制很容易 - 您所需要做的就是记住一个定义十六进制到二进制转换的 16 行短表:
0 - 0000
1 - 0001
2 - 0010
3 - 0011
4 - 0100
5 - 0101
6 - 0110
7 - 0111
8 - 1000
9 - 1001
A - 1010
B - 1011
C - 1100
D - 1101
E - 1110
F - 1111
Run Code Online (Sandbox Code Playgroud)
有了这张表,您可以轻松地将任意长度的十六进制字符串转换为其相应的位模式:
0x478FD105 - 01000111100011111011000100000101
Run Code Online (Sandbox Code Playgroud)
转换回来也很容易:将二进制数字按四分组,然后使用表格生成十六进制数字
0010 1001 0100 0101 0100 1111 0101 1100 - 0x29454F5C
Run Code Online (Sandbox Code Playgroud)