字符串结果
下面的函数将一个整数转换为二进制字符串(n是位数):
// Convert an integer to binary (in a string)
void int2bin(unsigned integer, char* binary, int n=8)
{
for (int i=0;i<n;i++)
binary[i] = (integer & (int)1<<(n-i-1)) ? '1' : '0';
binary[n]='\0';
}
在repl.it上进行在线测试。
来源:AnsWiki。
分配内存的字符串结果
以下函数将整数转换为二进制字符串并为字符串分配内存(n是位数):
char* int2bin(unsigned integer, int n=8)
{
char* binary = (char*)malloc(n+1);
for (int i=0;i<n;i++)
binary[i] = (integer & (int)1<<(n-i-1)) ? '1' : '0';
binary[n]='\0';
return binary;
}
这个选项允许你写出类似于printf ("%s", int2bin(78));
的代码,但是要小心,为字符串分配的内存必须在后面释放。
在线测试请访问repl.it。
来源:AnsWiki。
无符号整数的结果
以下函数将一个整数转换为另一个整数的二进制表示(最多8位):
unsigned int int_to_int(unsigned int k) {
return (k == 0 || k == 1 ? k : ((k % 2) + 10 * int_to_int(k / 2)));
}
在repl.it上进行在线测试
显示结果
以下函数显示二进制转换结果
// Convert an integer to binary and display the result
void int2bin(unsigned integer, int n=8)
{
for (int i=0;i<n;i++)
putchar ( (integer & (int)1<<(n-i-1)) ? '1' : '0' );
}
在repl.it上进行在线测试。
来源:AnsWiki。
realloc
了)。给定类型的大小以位为单位是一个常量,因此只需使用正确大小的缓冲区即可。 - R.. GitHub STOP HELPING ICEsizeof int * CHAR_BIT + 1
,以容纳终止空字符。 - Toby Speight