已有方法:
//十进制转二进制
char* decimal2binary( int numth)
{
string key;
bitset<4> t;
t = numth;
key = t.to_string();
char* ch = const_cast<char*>(key.c_str()); //const char* 转 char*
return ch;
}
有如下调用:
char **libraryKeys;
libraryKeys = (char**)malloc(10*sizeof(char*));
int j;
for(j = 0; j < 10; j++){
libraryKeys[j] = (char*)malloc(4*sizeof(char));
libraryKeys[j] = decimal2binary(j);
}
结果得到libraryKeys的十个值均为1001(即循环最后一次十进制9转换的二进制值);
将该调用更改为如下即可:
char **libraryKeys;
libraryKeys = (char**)malloc(10*sizeof(char*));
int j;
char* key = new char[4];
for(j = 0; j < numKeys; j++){
libraryKeys[j] = (char*)malloc(4*sizeof(char));
key = decimal2binary(j);
strcpy(libraryKeys[j], key);
}