-1

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

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

它显示 0 作为输出。

4

1 回答 1

4

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

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

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

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

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

我想知道 (1) 为什么您声明message为 asvoid*而不是 as char*,以及 (2) 为什么您使用包含控制字符的字符串'\003'来表示整数 value 3

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

于 2013-06-10T20:44:03.480 回答