我有一个关于 memcpy 的问题,希望有人能回答。这是一个简短的演示程序:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main (int argc, char **argv){
unsigned char buffer[10];
unsigned short checksum = 0x1234;
int i;
memset(buffer, 0x00, 10);
memcpy(buffer, (const unsigned char*)&checksum, 2);
for(i = 0; i < 10; i ++){
printf("%02x",buffer[i]);
}
printf("\n");
return 0;
}
当我运行这个程序时,我得到 34120000000000000000。
我的问题是为什么我得不到 12340000000000000000?
非常感谢
最佳答案
你得到 34120000000000000000 因为你在小端系统上。在大端系统上你会得到 12340000000000000000。 Endianness对大端系统和小端系统进行了全面讨论。
关于无符号字符数组的 C memcpy 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4222366/