【发布时间】:2016-11-18 06:04:17
【问题描述】:
我知道 0 到 F 代表 0-15,十六进制代码分为 3 组两位十六进制,但是 R、G 和 B 这两位数字如何达到 0 到 255 的值? 比如#FF FF FF是#1515 1515 1515,它显示为白色,等于R=255,G=255,B=255,但是两个15怎么等于255呢?乘以它们只有 225。
【问题讨论】:
我知道 0 到 F 代表 0-15,十六进制代码分为 3 组两位十六进制,但是 R、G 和 B 这两位数字如何达到 0 到 255 的值? 比如#FF FF FF是#1515 1515 1515,它显示为白色,等于R=255,G=255,B=255,但是两个15怎么等于255呢?乘以它们只有 225。
【问题讨论】:
对于# 15 15,你不做 15*15。因为数字是 hex (base 16) 而不是 decimal (base 10) 你会做 161*15 + 160*15 最终结果是 255。
不同基数的十进制255表示为
11111111 = 27*1 + 26*1 + 25* 1 + ...377 = 82*3 + 81*7 + 80* 7【讨论】:
它的数字基础。
(FF)_16 = 15*16^1 + 15*16^0 = (255)_10
FF 以 16 为基数,而您的 255 以 10 为基数。因此您需要应用基数转换来获得另一个基数的数字。
您可能想从this link 了解更多信息
【讨论】:
您似乎误解了 0x0~0xF 代表 0~15 的含义。 0xF 不代表数字 15;它代表一个值为 15 的数字。所以 0x10 不是数字 1 与 0 连接产生 10(这无论如何都没有意义,因为 0xA 是 10);相反,您可能想将其视为从 0x0 开始计数。
0x0 (0), 0x1 (1), 0x2 (2), 0x3 (3), 0x4 (4), 0x5 (5), 0x6 (6), 0x7 (7), 0x8 (8), 0x9 ( 9), 0xA (10), 0xB (11), 0xC (12), 0xD (13), 0xE (14), 0xF (15), 0x10 (16)。
【讨论】: