在 C 的内存位置存储一个 2byte 值

Store a 2byte value in memory location in C

在这个问题上我需要你的帮助:

我想在 char 数组中存储一个 2 字节的数字我尝试了以下 2 种逻辑,但都失败了

字符增益[10];

char* ptr = buff;

/* 我想存储一个 2 字节的值,比如 750 方法一 */

短一 = 750; *(++ptr)=a; //没有工作在缓冲区的前 2 个字节中得到这些值:0xffffffc8 0xffffffef

/*方法二*/

短*a=750; memcpy(++ptr,a,2) // 出现分段错误

我知道我可以通过除以 256 来做到这一点,但我想使用更简单的方法

*ptr++=750/256;

*ptr=750%256;

char buff[10];
short a=1023; 

//To store in char array
buff[0] = a & 0xff;
buff[1] = (a >> 8) & 0xff;

// To get original value.
short b = ((buff[1] << 8) & 0xff00) | (buff[0] & 0x00ff);

最简单的方法就是:

uint16_t u16 = 12345;
memcpy(&buff[i], &u16, 2);

memcpy会根据您的CPU endianess.

放置数据

或者您可以进行位移,但由于位移本身是 endianess-independent,您需要根据字节顺序手动为 buff 选择正确的索引。

内存布局类似 Little Endian:

buff[i]   = u16 & 0xFFu;
buff[i+1] = (u16 >> 8) & 0xFFu;

像Big Endian这样的内存布局:

buff[i]   = (u16 >> 8) & 0xFFu;
buff[i+1] = u16 & 0xFFu;