1

次の 32 ビット整数から 16 進文字列への前方後方変換が失敗することに驚きました。

Integer.parseInt(-2028332484.toHexString, 16)

与えます:

java.lang.NumberFormatException: For input string: "871a1a3c"

明らかに回避策は

java.lang.Long.parseLong(-2028332484.toHexString, 16).toInt

しかし、より良い (そしておそらくもっと Scala っぽい) 解決策はないのでしょうか?

4

1 に答える 1

0

Java については既に回答済みです

残念ながら、scala AFAIK では、その変換に対する追加の処理はありません。

Scala は で定義しRichIntます:

def toHexString: String = java.lang.Integer.toHexString(self)

とでStringLike

def toInt: Int         = java.lang.Integer.parseInt(toString)

とは別に、import java.lang.{Long => JLong}JLongはあなたのものよりもスケーラっぽいソリューションを知りません。

于 2013-04-07T05:48:04.753 に答える