我有一个文件,可以存储多达8个字节的数据.
我有一个系统(让我们调用Sys1),它可以从文件中带来8个字节并将其保存在ram内的缓冲区中.
我可以使用这8个字节并复制其中的一些东西,然后使用这个系统说"好了我已经完成了它,只需将这些数据发送回文件".
我想把8个字节带到缓冲区,复制一个整数,它需要4个字节,剩下的4个字节复制另一个整数.我只想要8字节的两个整数,我相信可以做到.
我设法只复制4个字节,这只是1个整数,并设法将其发送回文件.所以我有这样的事情:
char *data;
sys1.bring_the_8_bytes(&data);
//now the 8 bytes are in the buffer,
// data points to the first byte of the 8 byte sequence
int firstInteger = 10;
int secondInteger = 20;
//the two integers
memcpy(data,&firstInteger,sizeof(int));
//now the values of the first integer have been copied successfully.
sys1.send_the_8_bytes_back();
Run Code Online (Sandbox Code Playgroud)
现在这个工作正常!但是我不确定如何复制第一个整数然后立即复制第二个整数.
我实际上应该知道第一个字节的地址恰好在第一个整数占用的最后一个字节之后,然后在memcpy调用中使用这个地址作为目标地址,我的想法是否正确?如是,
我怎么能实现这个?我怎样才能找到我想要的这个地址?
提前致谢
计算出问题的地址只是sizeof(int)字节,超过了您已有的数据指针.您可以将其转换char*为a int*并使用该视图,因为您知道总是有一个有效的8字节区域要写入.
char *data;
sys1.bring_the_8_bytes(&data);
int *tmp = (int*)data;
tmp[0] = 10;
tmp[1] = 20;
Run Code Online (Sandbox Code Playgroud)
或者你可以添加到char*(添加sizeof(int))并做一秒钟memcpy.
| 归档时间: |
|
| 查看次数: |
7490 次 |
| 最近记录: |