1

如何将字符串中包含的数字从任何基数转换为任何其他基数?

碱基可以是任何值,即:2、16、10、4、8、9。

我希望用户输入基数。用户将输入输出基数(要转换为的基数)。用户将输入他想要转换的数字。

预想:我会将输入基数和输出基数保存在变量中。然后我将他输入的数字保存在一个字符串中(因为他可以输入任何类型的数字(十六进制、二进制、base-5 ..)。

我只是想弄清楚如何将该字符串转换为数字,以便将其转换为输出基数。

有任何想法吗?

4

2 回答 2

3

将数字 n 更改为基数 b 的一般算法类似于:

i = 0
while(n != 0)
   answer[i] = n mod b
   n /= b
   i++

(请注意, answer[0] 包含答案的最低有效数字。)这有意义吗?您在执行此伪代码的哪个部分时遇到问题?

于 2010-05-16T19:17:49.157 回答
1

要将字符串转换为整数,您需要查看ASCII 表

遍历字符串中的每个字符,直到结束,并根据字符是什么以及它在哪个范围内:'0' 到 '9','a' 到 'f','A' 到 'F' ,您需要减去其范围内的底部字符的值并添加任何适当的数量。然后将其添加到累加器值中,您应该设置为去。我想您还需要检查任何暗示该值所在基数的值(例如,我希望十六进制值以“0x”为前缀)。

因此,例如,如果您看到“1”,则需要减去“0”。如果您看到“a”,则需要减去“a”并添加 0x0a。

于 2010-05-17T18:09:15.743 回答