/*前提*/ long a = 0x12345678; char s[5] = {0}; /*方法一*/ /*原理: 取a的地址,强制转化为char*,(指针占一个字节,正好四个字节),然后解引用取值并赋给s[i];*/ for(int i = 0;i<4;i++) { s[i] = *((char*)&a+i); } /*方法二*/ /*原理: 将字符数组(4个字节),强制转化为long型指针,解引用,最后赋值;*/ *(long)s = a; /*方法三*/ /*原理: 使用库函数,拷贝内存; */ memcpy(s,&a,4); /*三者都是同样的效果的*/ printf("%x %x %x %x/n",s[0],s[1],s[2],s[3]); 当然,还需要考虑机器的大小端情况!