是否有预定义的内置函数将数字转换为C ++中的二进制格式?

时间:2015-03-07 19:09:35

标签: c++

Integer.toString(n,8) // decimal to octal

Integer.toString(n,2) // decimal to binary

Integer.toString(n,16) //decimal to Hex

我们在java中有这些函数...我们在c ++中有这样的内置函数吗

4 个答案:

答案 0 :(得分:12)

您可以使用std::bitset将数字转换为二进制格式。

使用以下代码段:

  std::string binary = std::bitset<8>(n).to_string();

答案 1 :(得分:2)

stdlib.h中有一个可用的函数 itoa ,我们可以将整数转换为字符串。它没有在C或C ++中精确定义,但得到了许多编译器的支持。

char *  itoa ( int value, char * str, int base );

itoa示例

#include <iostream>
#include <stdlib.h>

int main ()
{
    int i;
    char buffer [33];
    printf ("Enter a number: ");
    scanf ("%d",&i);
    itoa (i,buffer,10);
    printf ("decimal: %s\n",buffer);
    itoa (i,buffer,16);
    printf ("hexadecimal: %s\n",buffer);
    itoa (i,buffer,2);
    printf ("binary: %s\n",buffer);
    return 0;
}

<强>输出

Enter a number: 1750
decimal: 1750
hexadecimal: 6d6
binary: 11011010110

有关详细信息,请参阅itoa

答案 2 :(得分:2)

如果您需要跨平台方式来执行此操作cplusplus.com suggestssprintf是十六进制和八位字符的不错选项:

int Integer = 13;
char toOct[sizeof(int) * (unsigned int)(8.0f / 3.0f) + 2];
char toHex[sizeof(int) * 8 / 4 + 1];
bitset<sizeof(int)> toBin(Integer);

sprintf(toOct, "%o", Integer);
sprintf(toHex, "%x", Integer);

cout << "Binary: " << toBin << "\nOctal: " << toOct << "\nDecimal: " << Integer << "\nHexadecimal: " << toHex << endl;

请注意,toOcttoHex是char数组,其大小分别为八进制和十六进制字符串中的最大整数,因此无需动态调整大小。

答案 3 :(得分:0)

int n = 64;
string binary = bitset<64>(n).to_string();
binary.erase(0, binary.find_first_not_of('0'));
cout << binary << endl;