我正在撰寫一些代碼,根據我手動輸入的標簽將我的圖塊放入圖塊及其坐標的 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
}
我有一些代碼可以在您點擊它們時列印圖塊的標簽(用于確定 tileMap 的坐標)和圖塊的坐標 x 和 y 值(來自 tileMap)。因此,例如,當我點擊左下角右側的圖塊 1 時,我希望看到“1,0 | (X: 1, Y: 0)”,但是(當 x 和 y 都由char.toInt())我得到“1,0 |(X:49,Y:48)”
坐標 x=1, y=2 (tag = "1,2") 的圖塊放入 tileMap 時,其坐標在地圖輸入中,如下所示: | 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?
uj5u.com熱心網友回復:
因為計算機通常處理數字,所以每個字符在內部都表示為一個數字。使用 ASCII 字符編碼時,每個字符都是 0-127 范圍內的數字。Unicode 更復雜,但為了簡單起見,讓我們堅持使用 ASCII。
如果我們查看ASCII 表,我們可以看到例如該字母A在內部存盤為十進制值65。數字0存盤為48,數字1為49,依此類推。
char.toInt()并不意味著:“將此字符解釋為數字并將其回傳為整數”。它的意思是:“為這個字符回傳一個內部數值”。正如我們在 ASCII 表中看到的,內部表示0是48.
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/523750.html
標籤:科特林字符
下一篇:如何在mapOf中使用索引
