0

char 配列から 2 番目と 3 番目のバイトを抽出し、その値を整数として解釈しようとしています。この場合、0x01 と 0x18 を抽出し、その値を strtol を使用して 0x118 または 280 (10 進数) として解釈します。しかし、出力 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

ここで何が欠けていますか?助けていただければ幸いです。

4

2 に答える 2