我正在编写一些代码,根据我手动放入的标签,将我的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
。