在Kotlin中,为什么char.toInt()返回数字+48



我正在编写一些代码,根据我手动放入的标签,将我的tile放入tile及其坐标的mutableMap中,我发现char.toString().toInt()将字符返回为预期的数字,但出于某种原因,char.toInt()将其返回为数字+48。它为什么要这样做?这是我的代码,显示了这一点:

board.forEach { tile: View ->
var x: Int? = null
var y: Int? = null
tile.tag.toString().toCharArray().forEach { c: Char ->
if(c.isDigit() && x == null) x = c.toInt() else if(c.toString() != "," && y == null) y = c.toString().toInt()
}
tileMap[Coord(x!!, y!!)] = tile
}

我有一些代码可以打印tile的标签(这是用来确定tileMap的Coords的(和tile的Coords‘x&y值(来自tileMap(。例如,当我点击左下角右侧的瓷砖1时,我希望看到";1,0|(X:1,Y:0(";而是(当x和y都由CCD_ 3定义时(;1,0|(X:49,Y:48(";

坐标x=1,y=2(标签="1,2"(的瓦片当被放入瓦片映射中时,其坐标在地图中的输入如下:|tileMap X定义| tileMap Y定义|来自tileMap的坐标|实际坐标(来自其标记(||:----:|:----:|:----::----::|:-----:||char.toInt()|char.toInt()|"49, 50"|"1, 2"||char.toString().toInt()|char.toString().toInt()|"1, 2"|"1, 2"||char.toInt()|char.toString().toInt()|"49, 2"|"1, 2"|为什么char.toInt()(和char.code(返回的48比数字多?

因为计算机通常处理数字,所以每个字符在内部都表示为一个数字。使用ASCII字符编码时,每个字符都是0-127范围内的数字。Unicode比较复杂,但为了简单起见,让我们坚持使用ASCII。

如果我们查看ASCII表,我们可以看到,例如,字母A在内部存储为十进制值65。数字0作为48存储,数字1作为49存储,依此类推

CCD_ 24并不意味着:;将该字符解释为数字并将其作为整数返回;。意思是:;返回该字符的内部数值";。正如我们在ASCII表中看到的,0的内部表示是48

最新更新