【问题标题】:C++ int to binaryC++ int 到二进制
【发布时间】:2010-12-29 11:03:16
【问题描述】:

我正在使用 itoa 内置函数,以便将整数转换为二进制并将其存储在 char* 中。一切正常,输出也正确(如预期的那样)。唯一出错的是 itoa 不能在 Linux、suse 等开源系统上运行。 关于在开源环境中使用 itoa 的任何建议。

【问题讨论】:

标签: c++


【解决方案1】:

引用Wikipedia

itoa(整数到 ASCII)函数是标准 C 编程语言的广泛非标准扩展。它不能被移植使用,因为它没有在任何 C 语言标准中定义;但是,编译器通常在非一致性模式下通过标头 <stdlib.h> 提供它,因为它是标准库函数 atoi 的逻辑对应物。

换句话说:

  • 首先检查你的编译器选项,也许你可以强制它识别这个;
  • 如果失败,请使用其他人建议的解决方法之一,或者直接自己编写。这很简单。

【讨论】:

    【解决方案2】:

    使用 sprintf

    int i = 100;
    
    char str[5];
    
    sprintf(str, "%d", i);
    

    【讨论】:

    • str 如果要保存任何大小的整数,它的长度可能应该在 12 个左右。也更喜欢 snprintf 到 sprintf
    【解决方案3】:

    itoa 是非标准函数。您可以使用 stringstream 获得类似于 itoa 的行为

    #include<sstream>
    string a;
    int i;
    stringstream s;
    s << i;
    a = s.str();
    

    【讨论】:

    • s &lt; i?我也不相信这会转换为二进制。
    • sorry - s &lt;&lt;i 用于将 i 转换为 a 不用于转换为二进制。
    【解决方案4】:

    itoa 不是标准 C++ 函数。使用boost::lexical_cast,或者使用stringstreams

    【讨论】:

      猜你喜欢
      • 2020-08-29
      • 1970-01-01
      • 1970-01-01
      • 2019-03-18
      • 2014-11-28
      • 2010-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多