Android之颜色表示法:#与0x的区别

从计算机的数值表示上讲,0x开头的其实并不是所谓颜色代码的表示方法,而是16进制数的标准写法,譬如0xA就是十进制的10。而#开头的六(或三)位十六进制数是在设计领域(如CSS以及一些绘图软件)中颜色代码的表示方法。

如果我们只考虑24位颜色的话,电脑中每个像素的颜色其实就是用3个字节(24位)的无符号整数来存储的。所以用0x开头的“颜色代码”,也就是这个十六进制数表示的数值,其实就是颜色在内存(显存)中的存储方式。

不采用常见的10进制数而要采用0x开头的16进制数来表示颜色的原因:

在颜色这3个字节中,大家规定17-24位表示红色的分量,9-16位表示绿色的分量,1-8位表示蓝色的分量,因此一个十进制数16777215表示的颜色很难给我们一个直观的感觉,而将它转换成16进制数0xFFFFFF我们就可以很轻易的看出前两位FF表示红色,中间两位FF表示绿色,后面两位FF表示蓝色,这个数值表示白色。 于是就出现了在设计领域使用#开头的6位十六进制数来表示颜色的方式,既直观又可以方便地在内存中进行转换与存储。

结论:

#开头的六位十六进制数仅仅表示颜色
0x开头的数字表示包括颜色在内的一般数值。

注意:

1.在十进制中0123和123是相等的两个数字,所以0x000FFF和0xFFF是相等的两个数值,也就表示相同的两个颜色。但是,注意但是,#000FFF和#FFF表示的却是两个不同的颜色。
2.在CSS(以及部分绘图软件中)#后面跟3个十六进制数是被允许的,比如#ABC表示的颜色和#AABBCC表示的颜色相同。(竟然Android面试会碰到这种问题)





转载于:https://www.cnblogs.com/linux007/p/5783108.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值