超简单的细节有关问题,真纠结

超简单的细节问题,真纠结
unsigned char data[8];
unsigned str[2];
str[1] = 0;
str[0] = 24;
memset(data,str[0],4);
memset(data+4,str[1],4);

unsigned len[2];
memcpy(len,data,8);

printf("%d,%d\n",len[0],len[1]);
的结果却不是24,0.
这是什么?如果要得到24,0.应该如何?


PS:
unsigned char是一个字节;
unsigned是4个字节。


------解决方案--------------------
memset(data,str[0],4);

执行这个函数后,data数组的每个元素(一个字节)都被设置为24,即data[0]=24, data[1]=24, data[2]=24, data[3]=24,24的16进制是18,做为一个unsigned int 输出用16进制表示就是0x18181818,换算为10进制就是404,232,216。