如何将 HEX 颜色转换为 smali 颜色(Java)?
How to convert HEX color to smali color (in Java)?
如何将 HEX 颜色值转换为 smali 颜色(并返回)?例如:#ff212121
(十六进制)-> -0xdededf
(smali)。 #df3192b8
-> -0x20ce6d48
等
- 对 'f'
中你颜色中的所有数字进行十六进制减法
- 在新的十六进制数前预先附加 -0x。
不需要转换任何东西。如果你的十六进制代码是 #df3192b8
,那么你可以使用 0xdf3192b8
.
smali 中的 32 位整数常量可以指定为 -2^31
和 2^32-1
之间的值(而不是 2^31-1
)。基本上,它是可能的有符号和无符号 32 位值的组合。
当然,由于java只有有符号整数,当你指定一个在2^31
- 2^32 - 1
范围内的值时,它会被虚拟机解释为负数number,这是 baksmali 在反汇编 class 时使用的默认表示。这就是为什么您在反汇编中看到 -0x20ce6d48
而不是 0xdf3192b8
的原因。但是这两个值生成相同的 bytecode/specify 相同的颜色。
为了"convert back",如果值为正数,则不需要做任何事情。如果该值为负数,只需将 0x100000000
添加到该值即可。例如-0x20ce6d48 + 0x100000000 = 0xdf3192b8
,因此 -0x20ce6d48
的值对应于 #df3192b8
的十六进制颜色代码。
如何将 HEX 颜色值转换为 smali 颜色(并返回)?例如:#ff212121
(十六进制)-> -0xdededf
(smali)。 #df3192b8
-> -0x20ce6d48
等
- 对 'f' 中你颜色中的所有数字进行十六进制减法
- 在新的十六进制数前预先附加 -0x。
不需要转换任何东西。如果你的十六进制代码是 #df3192b8
,那么你可以使用 0xdf3192b8
.
smali 中的 32 位整数常量可以指定为 -2^31
和 2^32-1
之间的值(而不是 2^31-1
)。基本上,它是可能的有符号和无符号 32 位值的组合。
当然,由于java只有有符号整数,当你指定一个在2^31
- 2^32 - 1
范围内的值时,它会被虚拟机解释为负数number,这是 baksmali 在反汇编 class 时使用的默认表示。这就是为什么您在反汇编中看到 -0x20ce6d48
而不是 0xdf3192b8
的原因。但是这两个值生成相同的 bytecode/specify 相同的颜色。
为了"convert back",如果值为正数,则不需要做任何事情。如果该值为负数,只需将 0x100000000
添加到该值即可。例如-0x20ce6d48 + 0x100000000 = 0xdf3192b8
,因此 -0x20ce6d48
的值对应于 #df3192b8
的十六进制颜色代码。