通过 memcpy 从 unsigned char* 缓冲区获取 long

Get long from unsigned char* buffer via memcpy

在我从二进制 .exe 数据定义并填充缓冲区后 --

unsigned char *buffer ;         /*buffer*/
buffer = malloc(300) ; /*allocate space on heap*/
fread(buffer, 300, 1, file) ;

那么如何获取缓冲区121--124位置的字节 作为长值?

我试过了

long Hint = 0;
memcpy(Hint,  buffer[121], 4);
printf("Hint=x%x\n", Hint);

但我得到的只是 memcpy 异常终止

这是一个简单的方法(我在示例中将数字放入缓冲区):

unsigned char *buffer ;         /*buffer*/
buffer = (unsigned char*) malloc (300) ; /*allocate space on heap*/

for(int i=0;i<300;i++) /*initialize buffer with numbers for the demo*/
    buffer[i] =  i;

long Hint = 0;
long *h = (long *)&buffer[121];
Hint = *h;
printf("Hint=0x%x\n", Hint);

此输出将是:

Hint=0x7c7b7a79

十六进制中的数字 121-124 是什么。