如何将字符串中的数字转换为汇编中的任何基数?

时间:2010-05-16 19:07:33

标签: assembly x86 masm base-conversion

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

基础可以是任何东西,即:2,16,10,4,8,9。

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

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

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

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

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

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

(请注意,答案[0]代表答案的最低位数。)这有意义吗?你在实现这个伪代码的哪一部分时遇到了麻烦?

答案 1 :(得分:1)

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

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

例如,如果你看到'1',你需要减去'0'。如果你看到'a',你需要减去'a'并添加0x0a。