如何将字符串中包含的数字从任何基数转换为任何其他基数?
碱基可以是任何值,即:2、16、10、4、8、9。
我希望用户输入基数。用户将输入输出基数(要转换为的基数)。用户将输入他想要转换的数字。
预想:我会将输入基数和输出基数保存在变量中。然后我将他输入的数字保存在一个字符串中(因为他可以输入任何类型的数字(十六进制、二进制、base-5 ..)。
我只是想弄清楚如何将该字符串转换为数字,以便将其转换为输出基数。
有任何想法吗?
如何将字符串中包含的数字从任何基数转换为任何其他基数?
碱基可以是任何值,即:2、16、10、4、8、9。
我希望用户输入基数。用户将输入输出基数(要转换为的基数)。用户将输入他想要转换的数字。
预想:我会将输入基数和输出基数保存在变量中。然后我将他输入的数字保存在一个字符串中(因为他可以输入任何类型的数字(十六进制、二进制、base-5 ..)。
我只是想弄清楚如何将该字符串转换为数字,以便将其转换为输出基数。
有任何想法吗?
将数字 n 更改为基数 b 的一般算法类似于:
i = 0
while(n != 0)
answer[i] = n mod b
n /= b
i++
(请注意, answer[0] 包含答案的最低有效数字。)这有意义吗?您在执行此伪代码的哪个部分时遇到问题?
要将字符串转换为整数,您需要查看ASCII 表。
遍历字符串中的每个字符,直到结束,并根据字符是什么以及它在哪个范围内:'0' 到 '9','a' 到 'f','A' 到 'F' ,您需要减去其范围内的底部字符的值并添加任何适当的数量。然后将其添加到累加器值中,您应该设置为去。我想您还需要检查任何暗示该值所在基数的值(例如,我希望十六进制值以“0x”为前缀)。
因此,例如,如果您看到“1”,则需要减去“0”。如果您看到“a”,则需要减去“a”并添加 0x0a。