无符号字符数组的 C memcpy 问题

标签 c

我有一个关于 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/

相关文章:

c++ - OpenMP 4 对齐选项?

c++ - 在 isocpp.org 中是否有其他方法可以执行此示例?

c - 分析生成的汇编代码以操纵命令行参数

c - 打印中的排列错误?

c - 使用 C 的 regex.h lib 解析 key = value 的正则表达式是什么

python - 与 Python 相比,具有动态分配的结构数组在 C 中运行非常慢

c - 将 libc 静态链接到我的二进制文件会导致出现段错误

c - shmctl 在 C 中抛出 "cannot allocate memory"

c - gcc 编译器中关于 fork() 的歧义

c++ - AVR - 中断 vector 和全局变量