C:从字符数组复制到 int

标签 c arrays memcpy

  // Works
  int fnamesize=0;
  fnamesize=message[0]<<24;
  fnamesize+=message[1]<<16;
  fnamesize+=message[2]<<8;
  fnamesize+=message[3];

  // Doesn't work
  int fsize;
  memcpy(&fsize,message,sizeof(int));

有人可以解释为什么第二个不起作用吗?我从中复制的内存 message 是一个 char *。当我尝试测试 fnamesize 和 fsize 的值时,比如 printf("fsize is %d,fnamesize is %d",fsize,fnamesize);,fsize 给出了一个意外的值,但是 fnamesize 给出了我期望的值(value)。

想法?

最佳答案

那是因为endianess ,表示字节在 int 中的布局。

在 Windows 中,第二种方式会给你一个字节顺序相反的 int,像这样:

fsize=message[3]<<24;
fsize+=message[2]<<16;
fsize+=message[1]<<8;
fsize+=message[0];

关于C:从字符数组复制到 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9271475/

相关文章:

c - 复制结构时出现段错误

opengl-es - glMapBuffer 在 OpenGL-ES 2.0 中未声明

c - 如何使用用户输入拆分/划分数组

python - 在 Python 中使用 rjust() 并减少 for 循环

javascript - 使用 Array.prototype.slice.call 的 javascript 出现问题

java - 如何将二维字符串数组转换为一维字符串数组?

c++ - 有弹性替代品吗

c - 在不使用 string.h 库的情况下搜索字符串中的 'good'

c - C语言中blank是怎么定义的?

c - 用于结构复制的 memcpy 和 strncpy 的区别