我有类似的东西。
char header[4096]; //header information from a file
有一个名为startByteOffset
的字段8 bytes
(标题中的偏移量也是8),然后endByteOffset
也是8 bytes
。{offset在标题是16)。
我需要更改endByteOffset
。怎么做?谢谢。
如果不够清楚,请告诉我。
答案 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,你只需要改变轮班的顺序,首先从最大的班次开始。