在进行字符算术时,您执行以 10 为底还是以 8 为底的计算的规则是什么?我的书说 'A' = 101 in base 8 或 65 base 10 但是当我将 base 8 中的字符值插入到示例中时,我的书给出了关于说明这一点的示例,我得到了一些有趣的结果。下面的代码是我书中尝试查找新字符的 Ceaser Cipher 示例。如果我尝试转换 'Y' 并移动 8 个点以找到一个新字符,并且如果 ch = 'Y' 和 n = 8 我期望得到字符'G'。
ch = (char)('A' + (Character.toUpperCase(ch) - 'A' + n) % 26);
数学运算结果为
65 + (89 - 65 + 8) % 26 = 71 (base 10)
101 + (131 - 101 + 8) % 26 = 113 (base 8)
如果我将 71(以 10 为底)转换回以 8 为底,我将得到 107,即字符“G”,它是正确的字符。我的问题是为什么我不能在 base 8 中执行字符算术?113 是字符“K”,这是错误的字符。进行字符运算时是否有规则将所有值转换为以 10 为基数,然后再将它们转换回以 8 为基数?