如何使用 memcpy 将数据从两个整数复制到字符数组
How can I use memcpy to copy data from two integers to an array of characters?
我有一个文件,最多可以存储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();
现在这工作正常!但是我不确定如何立即复制第一个整数,然后复制第二个整数。
我其实应该知道第一个字节的地址正好在第一个整数占用的最后一个字节之后,然后在memcpy调用中用这个地址作为目标地址,我的想法正确吗? 如果是,
我怎样才能做到这一点??我怎样才能找到我想要的这个地址?
提前致谢
您在计算时遇到问题的地址只是比您已有的数据指针高出 sizeof(int)
个字节。 您可以将char*
投射到int*
并使用该,因为您知道您始终有一个有效的 8 字节区域要写入。
char *data;
sys1.bring_the_8_bytes(&data);
int *tmp = (int*)data;
tmp[0] = 10;
tmp[1] = 20;
或者您可以直接添加到char*
(添加sizeof(int)
)并执行第二个memcpy
。
你在追求这样的事情吗?
memcpy(data + sizeof(int), &secondInteger, sizeof(int));
如果您不介意数组并希望在一次调用中完成它,我建议您将两个整数复制到 int 数组中,然后写入文件。
相关文章:
- C++需要帮助从用户那里获得一个整数,并确保它在另外两个整数之间
- 比较C++中两个整数的最有效和最干净的方法是什么?
- 如何将字符串和整数读取到两个单独的动态数组中的程序编写?
- 为什么将两个浮点数相加会得到一个整数C++?
- 从两个 4x64 位整数数组中获取取模
- 为什么 Clang 和 GCC 中两个无符号整数之和的结果类型不同
- 比较两个整数在C++中与未知 int 类型的相等性
- 创建整数的 2D 数组,该数组将使用两个函数用随机数填充矩阵.我做错了什么?
- 如何组合两个整数向量
- 在两个整数之间交换最右边的N位
- 打印出两个整数之间的偶数
- 为什么将两个总和为 32k >整数相加时得到负数?
- C++ 两个线程,共享几个整数变量
- Python 等效代码,可像C++一样直接附加两个整数
- 是否有任何内置函数可以检查给定的两个数字在给定整数数组中的顺序是否相同?
- 移位运算符如何在查找两个整数中的不同位数?
- 如何安全地比较两个无符号整数计数器?
- 添加两个二进制数(整数数组)
- 运算符"|"如何计算两个整数?
- 如何找出在两个整数的乘积中设置了多少位(等于 1)