要将SELECT * FROM movie_tbl;
转换为char
等效值,我使用:
Int
我希望使用scala> 'a'.asDigit
res2: Int = 10
方法将10
转换为char a
:
toChar
但scala> 10.toChar
res3: Char =
未被退回。
如何将数字转换和取消转换为char?
答案 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。
要了解此处发生的一些事情,请注意Character
是10
的十进制表示形式,它是a
的十六进制表示形式。也就是说,在十六进制中,数字行上的第十个数字是10
。这与您转换为unicode字符时的表现形式不同,比如说,但它会让人感到困惑,因为:
a
所以,发生的事情是你的角色转换为十六进制数,然后表示为整数。但是直接从整数转换为字符并不起作用。
答案 1 :(得分:2)
asDigit
和toInt
之间存在差异。如果您希望Int
相当于' a'就Ascii字符集而言,请使用toInt
。
scala> 'a'.toInt
res12: Int = 97
scala> 97.toChar
res13: Char = a
要了解10.toChar
无法打印任何内容的原因,请查看character tables。