我正在尝试从 char 数组中提取第二个和第三个字节并将其值解释为整数。在这种情况下,要提取 0x01 和 0x18 并使用 strtol 将其值解释为 0x118 或 280(十进制)。但是输出 act len 返回 0。
int main() {
char str[]={0x82,0x01,0x18,0x7d};
char *len_f_str = malloc(10);
int i;
memset(len_f_str,'\0',sizeof(len_f_str));
strncpy(len_f_str,str+1,2);
printf("%x\n",str[1] & 0xff);
printf("%x\n",len_f_str[1] & 0xff);
printf("act len:%ld\n",strtol(len_f_str,NULL,16));
return 0;
}
输出:
bash-3.2$ ./a.out
1
18
act len:0
我在这里想念什么?帮助表示赞赏。