如何在C中将“\ 003”转换为int

时间:2013-06-10 20:38:37

标签: c string pointers int

如何在C中将“\ 003”转换为int?我有以下代码。

void* message="\003";
char* bptr;
printf("%ld",strtol((char*)message,&bptr,10));

显示0作为输出。

1 个答案:

答案 0 :(得分:4)

字符串文字"\003"指定一个由两个字符组成的字符串;第一个值为3,第二个是隐式'\0'空字符终止符。

值为3的字符通常不是可打印字符。特别是,它不是数字'3'

如果要从该字符串中提取int3,可以这样做:

int result = ((char*)message)[0];

但这似乎不是一件特别有用的事情。

我不得不怀疑(1)为什么你将message声明为void*而不是char*,以及(2)为什么你要使用包含控制字符{{}的字符串? 1}}表示整数值'\003'

将整数值表示为字符串的常用方法将整数3表示为3,而不是"3"。您当然可以将(小)整数值表示为单个字节,但通常使用单个'\003'char对象,而不是字符串或数组。最后,有一些方法可以将任意数字表示为字节序列,但如果你这样做,你还没有告诉我们你的表示细节;例如,什么字符串代表整数值unsigned char