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