[英]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.