Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 将整数转换为字符串_String_Integer_Assembly - Fatal编程技术网

String 将整数转换为字符串

String 将整数转换为字符串,string,integer,assembly,String,Integer,Assembly,我正在学习汇编语言,想写一个函数把一个数字转换成一个字符串。我要编写的函数的签名类似于C: int numToStr(long int num, unsigned int bufLen, char* buf) 函数应返回转换成功时使用的字节数,否则返回0 我目前的方法是一个简单的算法。在所有情况下,如果缓冲区已满,则返回0 检查数字是否为负数。如果是,将-字符写入buf[0]并增加缓冲区中的当前位置 重复除以10并将剩余的数存储在缓冲区中,直到除法产生0 将缓冲区中的数字反转 这是进行这种转换

我正在学习汇编语言,想写一个函数把一个数字转换成一个字符串。我要编写的函数的签名类似于C:

int numToStr(long int num, unsigned int bufLen, char* buf)
函数应返回转换成功时使用的字节数,否则返回
0

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

  • 检查数字是否为负数。如果是,将
    -
    字符写入
    buf[0]
    并增加缓冲区中的当前位置
  • 重复除以10并将剩余的数存储在缓冲区中,直到除法产生
    0
  • 将缓冲区中的数字反转

  • 这是进行这种转换的最佳方式吗?

    这就是我所看到的
    itoa
    的每一个实现的基本原理

    有一件事你没有提到,但确实想注意的是边界检查(即确保你没有写过
    bufLen

    关于符号:一旦你写了
    -
    ,你就需要对值求反。此外,
    -
    需要从最终冲销中排除;另一种方法是记住开头的符号,但只写在结尾(正好在反转之前)


    最后一个关键点是确保零被正确地写入,即作为
    0
    而不是空字符串。

    这种方法的一个问题是,您将以相反的顺序获取数字。@cnicutar您阅读了我方法的第3点吗?是的,谢谢。我已经做了边界检查。写下-later也是一种选择。