[英]C memcpy issues with unsigned char array
我有一個關於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,因為您使用的是小端系統。 您將在big-endian系統上獲得12340000000000000000。 Endianness對big-endian系統與little-endian系統進行了全面討論。
小端/大端架構? 這意味着2字節的校驗和被反轉。
這只是一個猜測,如果我的答案不是真的那么評論它我將刪除它。
英特爾的CPU是小端,它們首先存儲的數字很少
這顯然是英特爾不進行內部葯物測試的證據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.