繁体   English   中英

如何将十六进制颜色转换为smali颜色(在Java中)?

[英]How to convert HEX color to smali color (in Java)?

如何将十六进制中的颜色值转换为smali颜色(反过来)? 例如: #ff212121 (hex)-> -0xdededf (smali)。 df3192b8 > -0x20ce6d48

无需进行任何转换。 如果您的十六进制代码为#df3192b8 ,则可以使用0xdf3192b8

可以使用-2^312^32-1之间的值(不是2^31-1 )指定smali中的32位整数常量。 基本上,它是可能的有符号和无符号32位值的组合。

当然,由于Java只有符号整数,当你指定的范围内的值2^31 - 2^32 - 1 ,它就会由虚拟机解释为一个负数,这是默认表示该baksmali用途当拆卸一堂课时。 这就是为什么您在反汇编中看到-0x20ce6d48而不是0xdf3192b8的原因。 但是两个值都生成相同的字节码/指定相同的颜色。

为了“转换回”,如果该值为正,则无需执行任何操作。 如果该值为负,则只需将0x100000000添加到该值。 例如-0x20ce6d48 + 0x100000000 = 0xdf3192b8 ,所以值-0x20ce6d48对应的十六进制颜色代码#df3192b8

  1. 用'f'对颜色中的所有数字进行十六进制减法
  2. 在新的十六进制数字前添加-0x。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM