在实际应用中我们可能有这样的需求,需要将相应的数字转换成相应的字符串。我们知道在windows系统中有这样一组函数。
itoa() 将整型值转换为字符串
itoa() 将长整型值转换为字符串
ultoa() 将无符号长整型值转换为字符串
以itoa()为例,该函数有3个参数:第一个参数是要转换的数字,第二个参数是要写入转换结果的目标字符串,第三个参数是转移数字时所用的基数。在上例中,转换基数为10。10:十进制;2:二进制... itoa并不是一个标准的C函数,它是Windows特有的,如果要写跨平台的程序,请用sprintf。
char str[255];
sprintf(str, "%x", 100); //将100转为16进制表示的字符串
在linux中编程时也许我们还可以选择用宏来实现,这样我们可以感受到宏的魅力。注意:下面的宏必须转一下,否则不会达到我们所希望的效果。你实践一下就知道了。
#define _STR(s) #s
#define STR(s) _STR(s) // 转换宏
#define _CONS(a,b) int(a##e##b)
#define CONS(a,b) _CONS(a,b) // 转换宏
printf("int max: %s\n", STR(INT_MAX)); //INT_MAX,int型的最大值,为一个变量#include
输出为: int max: 0x7fffffff
STR(INT_MAX) --> _STR(0x7fffffff) 然后再转换成字符串。上面提到的宏中应用##时也是这样用。这里就不再赘述了。
阅读(526) | 评论(0) | 转发(0) |