Integer.toString(n,8) // decimal to octal
Integer.toString(n,2) // decimal to binary
Integer.toString(n,16) //decimal to Hex
我们在java中有这些函数...我们在c ++中有这样的内置函数吗
答案 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 suggests:sprintf
是十六进制和八位字符的不错选项:
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;
请注意,toOct
和toHex
是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;