将整数转换为字符串

时间:2011-08-25 08:06:11

标签: string integer assembly

我正在尝试学习汇编程序,并希望编写一个函数来将数字转换为字符串。我想写的函数的签名看起来像C一样:

int numToStr(long int num, unsigned int bufLen, char* buf)

该函数应返回转换成功时使用的字节数,否则返回0

我目前的方法是一种简单的算法。在所有情况下,如果缓冲区已满,则返回0.

  1. 检查数字是否为负数。如果是,请将-字符写入buf[0]并增加缓冲区中的当前位置
  2. 重复除以10并将余数存储在缓冲区中,直到除法产生0
  3. 反转缓冲区中的数字。
  4. 这是进行此转换的最佳方式吗?

1 个答案:

答案 0 :(得分:2)

这几乎就是我见过itoa的每一个实现的方式。

你没有提及但想要照顾的一件事是边界检查(即确保你不写过去bufLen)。

关于标志:一旦你写了-,就需要否定价值。此外,-需要排除在最后的逆转之外;另一种方法是在开始时记住符号,但只在末尾写入(在反转之前)。

最后一个案例是确保零被正确写出,即0而不是空字符串。