我有一個二進制文件,我正在閱讀字節數組的集合。如何將二進制文件讀入字節數組?
該文件包含多個(任意數量)的記錄。本質上是一個字節塊。每個記錄的長度是任意的。
該文件的標題提供了每個記錄的偏移量。
record 0: offset 2892
record 1: offset 4849
....
record 98: offset 328932
record 99: offset 338498
我已經編寫了代碼來做循環,並在每個記錄中讀取它的字節數組。查看偏移量的差異給我創紀錄的大小。尋找偏移量,然後調用ReadBytes()將該記錄讀入其數組中。
我目前不完整的解決方案不能用於最後的記錄。你如何將最後一條記錄讀入數組(記住它是任意長度的)。
至於爲什麼?每條記錄都是加密的,需要分別解密。我正在編寫將每個記錄讀入一個字節數組的代碼。解密它,然後將所有記錄寫回文件。
代碼添加在請求:
//recordOffsets contain byte location of each record start. All headers (other than universal header) are contained within record 0.
recordBlocks = new List<RecordBlock>();
//store all recordOffsets. Record0 offset will be used to load rest of headers. Remaining are used to parse text of eBook.
for (int i = 0; i < standardHeader.numRecs; i++)
{
RecordBlock r = new RecordBlock();
r.offset = bookReader.ReadInt32(EndianReader.Endian.BigEndian);
r.number = bookReader.ReadInt32(EndianReader.Endian.BigEndian);
recordBlocks.Add(r);
}
foreach (RecordBlock r in recordBlocks)
{
if (r.number == recordBlocks.Count)
{
///deal with last record
}
else
{
r.size = recordBlocks[(r.number) + 1].offset - r.offset;
}
bookReader.Seek(r.offset, SeekOrigin.Begin);
r.data = bookReader.ReadBytes(r.size);
}
你可以請張貼一些代碼嗎? – TalentTuner 2010-11-26 05:11:36
到目前爲止您能向我們展示您的代碼嗎? – Aamir 2010-11-26 05:11:47