int和char之间的转换无法按预期工作

时间:2016-09-07 19:12:48

标签: scala

要将SELECT * FROM movie_tbl; 转换为char等效值,我使用:

Int

我希望使用scala> 'a'.asDigit res2: Int = 10 方法将10转换为char a

toChar

scala> 10.toChar res3: Char = 未被退回。

如何将数字转换和取消转换为char?

2 个答案:

答案 0 :(得分:2)

您需要使用Character.forDigit

'a'.asDigit  // res1: Int = 10

Character.forDigit(10, 16)  // res1: Int = 10

请注意RADIX的{​​{1}}值为16(十六进制),使用另一个值可能会导致编码问题。 Scala使用RichChar来包装角色并提供asDigit函数。这使用了Java asDigit类提供的底层转换,其相关文档为here

要了解此处发生的一些事情,请注意Character10十进制表示形式,它是a的十六进制表示形式。也就是说,在十六进制中,数字行上的第十个数字是10。这与您转换为unicode字符时的表现形式不同,比如说,但它会让人感到困惑,因为:

a

所以,发生的事情是你的角色转换为十六进制数,然后表示为整数。但是直接从整数转换为字符并不起作用。

答案 1 :(得分:2)

asDigittoInt之间存在差异。如果您希望Int相当于' a'就Ascii字符集而言,请使用toInt

scala> 'a'.toInt
res12: Int = 97

scala> 97.toChar
res13: Char = a

要了解10.toChar无法打印任何内容的原因,请查看character tables