2012-09-12 27 views
0

我有這樣的事情。如何操作字符數組

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

有一個叫做startByteOffset字段,它是8 bytes(在頭偏移是8太),然後有endByteOffset這在lenght 8 bytes太。(偏移在報頭是16)。 我需要更改endByteOffset。怎麼做?謝謝。 讓我知道,如果它不夠清楚。

+6

其不夠清楚 – mathematician1975

+0

header [someOffset] = someValue;頭[someOtherOffset] = someOtherValue; –

+0

如果這個頭裏有字段,那麼爲什麼要將它聲明爲一個char數組?它是一個結構,因此定義它。如果您還需要以char數組的形式訪問它,則可以創建一個聯合。 –

回答

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; 

你需要知道,如果值存儲在小尾數大端秩序。我上面提供的例子是用於小端;對於big-endian而言,您只需倒轉班次的順序,先從最大班次開始。