我有一種顏色#FFFFFF,我想將其轉換為0xFFFFFF
這是我的代碼轉換它:
val hexColor = "0x${picture.color.drop(1)}".toInt()
當我運行專案時,出現此錯誤:
Exception in thread "main" java.lang.NumberFormatException: For input string:
"0xFFFFFF"
知道為什么我會收到此錯誤嗎?
uj5u.com熱心網友回復:
如果您只想轉換FFFFFF為0xFFFFFF,則不需要,.toInt()其余的代碼應該可以正常作業。
如果要將顏色的值從十六進制轉換為十進制,則可以使用 .toInt(16) 函式,開頭沒有基數 (0x),如下所示:
val color = picture.color.drop(1).toInt(16)
或使用Integer.decode(),像這樣:
val color = Integer.decode("0x${picture.color.drop(1)}")
uj5u.com熱心網友回復:
在運算式"0x${picture.color.drop(1)}".toInt()中,0x將添加到字串中,然后轉換為 Int。0x對 Int 沒有意義。所以首先將其轉換為 Int :
"0x${picture.color.drop(1).toInt()}"
// #FFFFFF --> 0x16777215 (wrong)
當然,將 0x 放在十進制數字之前會改變其含義/值。因此,只需將 Int 數字轉換為十六進制:
"0x${picture.color.drop(1).toInt(16).toString(16)}"
// #FFFFFF --> 0xffffff (lowercase because that's how it's represented)
但它是一個十六進制字串。而你之前擁有的已經是一個十六進制字串,前面還有一個額外的#。所以只需洗掉它并添加0x:
"0x${picture.color.drop(1)}"
// #FFFFFF --> 0xFFFFFF
如果要將顏色存盤為 int 并以十六進制列印,請結合第 1 部分和第 2 部分:
val actualColourValue = picture.color.drop(1).toInt(16)
println(actualColourValue) // 16777215
println("0x${actualColourValue.toString(16)}") // 0xffffff
uj5u.com熱心網友回復:
為了將十六進制轉換String為 base10 數字并回傳,請將 base 作為引數傳遞給toInt()- 方法:toInt(16)用于十六進制數字。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/462388.html
標籤:科特林
