我想将 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?
我想将 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?
对于简单的数字到整数的转换,有asDigit
:
scala> "123" map (_.asDigit)
res5: scala.collection.immutable.IndexedSeq[Int] = Vector(1, 2, 3)
使用 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/
.toInt
会给你ascii值。这可能是最容易写的
"123".head - '0'
如果你想处理非数字字符,你可以做
c match {
case c if '0' <= c && c <= '9' => Some(c - '0')
case _ => None
}
你也可以使用
"123".head.toString.toInt