char * itoa ( int value, char * str, int base );
//返回值等于str
value表示要转换的整数;
str用于存储准换后的字符串;对str所指向空间大小的要求是:16位系统最大需要17字节,32位的系统最大需要33个字节。因为base可以最低取2.
base表示要转换成某种进制的基数标识,base可以取值2-36之间的值,比如2,8,10,16分别表示2进制,8进制,10进制,16进制。
如果base取值为10且value为一个负数,那么转换后的字符串前面会含有’-’号,其他base下,都认为是无符号整数。
由上面可以知道itoa函数可以完成将一个整数格式化成一个二进制表示的字符串的需求。但是我们应该明白的是itoa函数不属于C标准,很巧合的是Linux下gcc也不支持该函数。所以我们需要在Linux下面自己来编写将一个整数转换成二进制字符串的函数。如下代码:
int itoa_bin(unsigned int data, char *str)
{
if (str == NULL)
return -1;
char *start = str;
while (data)
{
if (data & 0x1)
*str++ = 0x31;
else
*str++ = 0x30;
data >>= 1;
}
*str = 0;
//reverse the order
char *low, *high, temp;
low = start, high = str - 1;
while (low < high)
{
temp = *low;
*low = *high;
*high = temp;
++low;
--high;
}
return 0;
}