Unicode翻译(Java)

时间:2013-01-24 16:30:26

标签: java unicode

我目前正在阅读“开始Android游戏”一书,我在理解以下代码时遇到了问题:

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。

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

提前致谢!

1 个答案:

答案 0 :(得分: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' 

两者都是一样的。