簡體   English   中英

C memcpy與unsigned char數組有關

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM