[英]How to convert HEX color to smali color (in Java)?
如何将十六进制中的颜色值转换为smali颜色(反过来)? 例如: #ff212121
(hex)-> -0xdededf
(smali)。 # df3192b8
> -0x20ce6d48
等
无需进行任何转换。 如果您的十六进制代码为#df3192b8
,则可以使用0xdf3192b8
。
可以使用-2^31
和2^32-1
之间的值(不是2^31-1
)指定smali中的32位整数常量。 基本上,它是可能的有符号和无符号32位值的组合。
当然,由于Java只有符号整数,当你指定的范围内的值2^31
- 2^32 - 1
,它就会由虚拟机解释为一个负数,这是默认表示该baksmali用途当拆卸一堂课时。 这就是为什么您在反汇编中看到-0x20ce6d48
而不是0xdf3192b8
的原因。 但是两个值都生成相同的字节码/指定相同的颜色。
为了“转换回”,如果该值为正,则无需执行任何操作。 如果该值为负,则只需将0x100000000
添加到该值。 例如-0x20ce6d48 + 0x100000000 = 0xdf3192b8
,所以值-0x20ce6d48
对应的十六进制颜色代码#df3192b8
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.