0

私はこのようなものを持っています。

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

which startByteOffsetis 8 bytes(ヘッダーのオフセットも8)と呼ばれるフィールドがあり、次に長さのフィールドもあります(ヘッダーのオフセットは16です)。を変更する必要があります。どうやってするか?ありがとう。はっきりしない場合はお知らせください。endByteOffset8 bytesendByteOffset

4

1 に答える 1

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;

値をリトルエンディアンとビッグエンディアンのどちらの順序で格納するかを知る必要があります。上記で提供した例は、リトルエンディアン用です。ビッグエンディアンの場合は、シフトの順序を逆にして、最大のシフトから始めます。

于 2012-09-12T15:40:44.390 に答える