2013-04-07 1 views
1

Я был удивлен, что следующее вперед назад преобразование из 32-битных целых чисел в шестнадцатеричных строках не удается:java.lang.Integer.parseInt терпит неудачу с шестигранными строками шляпу использовать старшие битый

Integer.parseInt(-2028332484.toHexString, 16) 

Дает:

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

Очевидно, что временное решение

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

Но мне интересно, если не лучше (и, возможно, более Sca la'ish)?

ответ

0

Ответ получен в ответ на Java уже here.

К сожалению, для этой трансформации в 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 я не знаю больше SCALA-иш решение, чем ваша.

+0

Спасибо за ссылку. Я вижу, что симметричный аналог 'parseInt (_, 16)' действительно 'toString (_, 16)', и нет никакого аналога для 'toHexString'. –