通过 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 是什么。
在我从二进制 .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 是什么。