java到base 7的转换

e5nqia27  于 2021-07-06  发布在  Java
关注(0)|答案(3)|浏览(431)

我一直在试图理解一个程序的代码,它可以将十进制数转换为7的基数。在给定的循环开始之前,我完全理解一切。你能给我解释一下吗?

do {
    char digit = (char) (number % 7 + '0');
    s = digit + s;
    number /= 7;
} while (number > 0);
System.out.print(s);
kzipqqlq

kzipqqlq1#

我认为,您缺少的是char(7)并没有给出7作为字符,而是ascii表中的第7个字符。
对7进行模数运算会得到一个介于0和6之间的数,其余的数会被7除。但是如果你想把它转换成一个字符,你需要在ascii表中找到这个数字的索引。这个索引将是零的索引加上这个数字

char digit = (char) (number % 7 + '0');

现在,我不确定是否有必要使用char。。。可以将字符串与数字连接起来。

mftmpeh8

mftmpeh82#

do {
} while (number > 0);

是正常的吗 do-while -只是和 while -以检查 while -只有在对身体进行评估之后,而不是在评估之前 while -循环就行了。

char digit = (char) (number % 7 + '0');

正在将数字从数字转换为字符。 '0' 需要添加到号码中,因为号码 0 和角色不一样 '0' (例如,请参见ascii表格)并因此添加字符偏移量 '0' 到一个数字(例如。g。 7 )将产生表示字符的数字 '7' 而不是位置上的符号 8 (基于0)在字符集中。

ubof19bj

ubof19bj3#

从评论来看,似乎主要是这一行

char digit = (char) (number % 7 + '0');

你不明白。
它转换 number % 7 ,它是一个整数,以数字作为字符。数字的字符码是连续的,48表示“0”,49表示“1”,依此类推。在“0”的字符代码中添加一个介于0和9(含9)之间的数字,可以得到相应数字的字符代码。

相关问题