0

我想将 char 转换为 int 值。我对这种toInt工作方式有点困惑。

println(("123").toList)         //List(1, 2, 3)
("123").toList.head             // res0: Char = 1
("123").toList.head.toInt       // res1: Int = 49 WTF??????

49无缘无故随机弹出。如何以正确的方式将 char 转换为 int?

4

4 回答 4

5

对于简单的数字到整数的转换,有asDigit

scala> "123" map (_.asDigit)
res5: scala.collection.immutable.IndexedSeq[Int] = Vector(1, 2, 3)
于 2012-09-28T20:24:52.763 回答
2

使用 Integer.parseInt("1", 10)。请注意,这里的 10 是基数。

val x = "1234"
val y = x.slice(0,1)
val z = Integer.parseInt(y)
val z2 = y.toInt //equivalent to the line above, see @Rogach answer
val z3 = Integer.parseInt(y, 8) //This would give you the representation in base 8 (radix of 8)

49 不会随机弹出。这是“1”的ASCII表示。见http://www.asciitable.com/

于 2012-09-28T18:14:52.123 回答
1

.toInt会给你ascii值。这可能是最容易写的

"123".head - '0'

如果你想处理非数字字符,你可以做

c match {
  case c if '0' <= c && c <= '9' => Some(c - '0')
  case _ => None
}
于 2012-09-28T18:15:30.437 回答
0

你也可以使用

"123".head.toString.toInt
于 2012-09-28T20:01:39.793 回答