如何在C中将“\ 003”转换为int?我有以下代码。
void* message="\003";
char* bptr;
printf("%ld",strtol((char*)message,&bptr,10));
显示0作为输出。
答案 0 :(得分:4)
字符串文字"\003"
指定一个由两个字符组成的字符串;第一个值为3,第二个是隐式'\0'
空字符终止符。
值为3的字符通常不是可打印字符。特别是,它不是数字'3'
。
如果要从该字符串中提取int
值3
,可以这样做:
int result = ((char*)message)[0];
但这似乎不是一件特别有用的事情。
我不得不怀疑(1)为什么你将message
声明为void*
而不是char*
,以及(2)为什么你要使用包含控制字符{{}的字符串? 1}}表示整数值'\003'
。
将整数值表示为字符串的常用方法将整数3
表示为3
,而不是"3"
。您当然可以将(小)整数值表示为单个字节,但通常使用单个'\003'
或char
对象,而不是字符串或数组。最后,有一些方法可以将任意数字表示为字节序列,但如果你这样做,你还没有告诉我们你的表示细节;例如,什么字符串代表整数值unsigned char
?