C語言标準庫沒有整數轉二進制字元串函數,随手寫一個:
#include "stdio.h"
#include
#include
static const char* LIST[16] = {
"0000", "0001", "0010","0011", "0100", "0101", "0110","0111",
"1000", "1001", "1010","1011", "1100", "1101", "1110","1111"
};
const char* getBinaryStringByIndex(const int index){
if(index<0 || index>15){
return NULL;
}
return LIST[index];
}
void printBinaryNumber(const int num, char* out){
int group = sizeof(num) * 8 / 4;
int i;
for(i=0; i
int index = (num >> (group-i-1)*4) & 0x0f;
const char* groupResult = getBinaryStringByIndex(index);
strcpy(out+i*4, groupResult);
}
}
int main(){
int a = 1997;
int len = sizeof(a)*8;
char* result = (char*) calloc(len+1, 1);
if(!result){
printf("alloc memory failed");
return -1;
}
printBinaryNumber(1997, result);
printf("result: %s", result);
free(result);
return 0;
}
輸出如下: