0

我目前正在阅读“Beginning Android Games”一书,但在理解以下代码时遇到了问题:

int srcX = 0;
int srcWidth = 0;
if (ch == '.') {
  srcX = 200; //Jump to position 200 px in the bitmap
  srcWidth = 10; //A dot is only 10 px
} else {
  srcX = (ch - '0') * 20;
  srcWidth = 20;
}

我有一个数字从 0 到 9 的位图,用于显示高分和演奏时的分数。该变量srcX用于查找相应数字在位图中的位置(以像素为单位)。

Ch 是一个字符变量,用于保存字符串中的当前字符(可以是数字、空格或点)。

我的问题是我不明白为什么我们必须使用 (ch - '0') 才能获得“真实”数字而不是 unicode 数字。例如,if ch = "1", (ch - '0')结果为 1。如果我不使用“-'0'”,我会得到 unicode,即 49。

当然,为了从 unicode 转换为“实数”,必须发生一些事情。但是为什么结果 (ch - '0') 是 1 而不是 49。

我希望你们能理解我的问题并能帮助我。

提前致谢!

4

1 回答 1

1

字符 '0' 具有 unicode(与值 0..127 的 ASCII 相同)值48
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'
具有 char 值
48, 49, .., 57

如果您想将其中一个字符转换为一个值('0' -> 0),您可以这样做

c-48;

或者

c-'0' 

两者都一样。

于 2013-01-24T16:36:35.183 回答