最近被问到这个问题,不知道答案。有人可以从高层次解释Java如何获取字符/字符串并将其转换为int。
通常这是这样完成的:
- 初始化结果为 0
- for each character in string do this
- 结果 = 结果 * 10
- 从字符中获取数字(“0”是 48 ASCII(或 0x30),因此只需从字符 ASCII 代码中减去它即可获取数字)
- 将数字添加到结果中
- 返回结果
Edit:如果您用正确的基数替换 10 并调整从相应字符获取数字的方法,这适用于任何基数(对于低于 10 的基数应该按原样工作,但对于更高的基数需要稍微调整 - 例如十六进制 - 因为字母与数字相隔 7 个字符)。
Edit 2:字符到数字值的转换:字符“0”到“9”的 ASCII 值为 48 到 57(十六进制为 0x30 到 0x39),因此为了将字符转换为其数字值,需要进行简单的减法。通常是这样完成的(其中 ord 是给出字符 ASCII 代码的函数):
digit = ord(char) - ord('0')
对于更高的数字基数,字母用作“数字”(十六进制中的 A-F),但字母从 65(十六进制 0x41)开始,这意味着我们必须考虑到一个间隙:
digit = ord(char) - ord('0')
if digit > 9 then digit -= 7
示例:'B' 是 66,所以 ord('B') - ord('0') = 18。由于 18 大于 9,我们减去 7,最终结果将是 11 - '数字' B 的值。
这里还要注意一件事 - 这仅适用于大写字母,因此必须首先将数字转换为大写字母。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)