我正在尝试学习汇编程序,并希望编写一个函数来将数字转换为字符串。我想写的函数的签名看起来像C一样:
int numToStr(long int num, unsigned int bufLen, char* buf)
该函数应返回转换成功时使用的字节数,否则返回0
。
我目前的方法是一种简单的算法。在所有情况下,如果缓冲区已满,则返回0.
-
字符写入buf[0]
并增加缓冲区中的当前位置0
。这是进行此转换的最佳方式吗?
答案 0 :(得分:2)
这几乎就是我见过itoa
的每一个实现的方式。
你没有提及但想要照顾的一件事是边界检查(即确保你不写过去bufLen
)。
关于标志:一旦你写了-
,就需要否定价值。此外,-
需要排除在最后的逆转之外;另一种方法是在开始时记住符号,但只在末尾写入(在反转之前)。
最后一个案例是确保零被正确写出,即0
而不是空字符串。