【发布时间】:2019-01-08 19:29:08
【问题描述】:
如果这很明显,请原谅我,但我正在使用字节数组通过网络发送数据,我需要将一个整数塞入其中,然后将其从另一端取出。
示例中的类型定义:
uint8_t *dest;
uint8_t *ciphertext;
size_t cbytes; // length of ciphertext
uint8_t iv[16];
uint8_t tag[16];
作者的相关部分:
size_t bytes = 0;
memcpy(&dest[bytes], iv, sizeof(iv));
bytes = sizeof(iv);
memcpy(&dest[bytes], (void*)htonl(cbytes), sizeof(uint32_t));
bytes += sizeof(uint32_t);
memcpy(&dest[bytes], ciphertext, cbytes);
bytes += cbytes;
memcpy(&dest[bytes], tag, sizeof(tag));
bytes += sizeof(tag);
这是将cbytes 作为整数填充到字节数组中的正确方法吗?如果没有,有什么更好的方法?
现在,使用这个字节数组,我如何将cbytes 读回一个整数(或 size_t)?其余的可以直接复制回来,但不确定如何处理整数。
【问题讨论】:
标签: c network-programming endianness