第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

hexString.toInt(32) NumberFormatException

hexString.toInt(32) NumberFormatException

動漫人物 2021-10-27 10:37:31
我有一個 32 位十六進(jìn)制值,我希望將其轉(zhuǎn)換為整數(shù)。給定十六進(jìn)制字符串,以下方法都提供以下錯誤C71C5E00:java.lang.NumberFormatException:對于輸入字符串:“C71C5E00”"C71C5E00".toInt(32) Integer.valueOf("C71C5E00",?32)Kotlin文檔指出 Int表示 32 位有符號整數(shù),因此并不是說該值太大而無法裝入 Int。我試過,在0x字符串之前,徒勞無功。我嘗試過:java.lang.Integer.parseInt("C71C5E00",?32)不幸的是,我仍然收到同樣的錯誤。我不經(jīng)常接觸 Android 或 Kotlin,所以請原諒我的無知。
查看完整描述

1 回答

?
慕蓋茨4494581

TA貢獻(xiàn)1850條經(jīng)驗 獲得超11個贊

首先,您似乎誤解了基數(shù),它是valueOfand 中的第二個parseInt參數(shù),也是擴展函數(shù) 的唯一參數(shù)toInt。它不代表目標(biāo)數(shù)字類型中的位,它告訴方法如何通過通知它正在運行的基數(shù)來轉(zhuǎn)換你的字符串。請注意,還有第二個問題,我將在后面討論。


基數(shù)是基礎(chǔ)數(shù)字系統(tǒng)的基數(shù)。默認(rèn)情況下,它是10(0-ARGtoInt()方法toInt()調(diào)用parseInt,就像這樣:


public static int parseInt(String s) throws NumberFormatException {

    return parseInt(s,10);

}

如您所見,它使用基數(shù) = 10。同樣,數(shù)字類型的位在這里無關(guān)緊要。維基百科很好地涵蓋了它,Java 或多或少遵循相同的系統(tǒng)。如您所見,16 對應(yīng)于十六進(jìn)制。所以這里使用的合適基數(shù)是 16。


然而,就像我提到的,還有第二個問題。它仍然會崩潰,因為無法解析該值。結(jié)果數(shù)字是3340525056,它大于最大 int 值,即 2147483647。


這意味著,您不能使用任何 int 方法;你需要使用它們Long。


所以,對于你的情況,這很好:


val x = "C71C5E00".toLong(16)

同樣,基數(shù)是要使用的數(shù)字系統(tǒng),而不是結(jié)果數(shù)字中的位數(shù)。如果是,則需要使用 64 來表示多頭。


獎勵:整數(shù)和長整數(shù)具有預(yù)定數(shù)量的位。通過使用toInt(),您已經(jīng)隱式請求 32 位。使用 Long,您請求的是 64 位。


查看完整回答
反對 回復(fù) 2021-10-27
  • 1 回答
  • 0 關(guān)注
  • 209 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號