如何操作char数组

时间:2012-09-12 15:31:39

标签: c++ c arrays char buffer

我有类似的东西。

char header[4096]; //header information from a file

有一个名为startByteOffset的字段8 bytes(标题中的偏移量也是8),然后endByteOffset也是8 bytes。{offset在标题是16)。 我需要更改endByteOffset。怎么做?谢谢。 如果不够清楚,请告诉我。

1 个答案:

答案 0 :(得分:3)

要将整数分解为字符(字节),您可以使用移位和屏蔽。

uint64_t value = /* ... */;
header[endbyteoffset]   = value         & 0xff;
header[endbyteoffset+1] = (value >> 8)  & 0xff;
header[endbyteoffset+2] = (value >> 16) & 0xff;
header[endbyteoffset+3] = (value >> 24) & 0xff;
// ...
header[endbyteoffset+7] = (value >> 56) & 0xff;

您需要知道这些值是否存储在 little-endian big-endian 顺序中。我上面提供的例子是little-endian;对于big-endian,你只需要改变轮班的顺序,首先从最大的班次开始。