簡體   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