public static SFOHeader Read(Stream fIn) { SFOHeader sfoHeader = new SFOHeader(); byte[] tempByteArray = new byte[4]; // read FileType fIn.Read(tempByteArray, 0, 4); sfoHeader.FileType = SFOReaderUtilities.ByteArrayToString(tempByteArray); // read sfoVerion fIn.Read(tempByteArray, 0, 4); sfoHeader.SfoVersion = SFOReaderUtilities.ByteArrayToString(tempByteArray); // read offsetKeyTable fIn.Read(tempByteArray, 0, 4); sfoHeader.OffsetKeyTable = SFOReaderUtilities.ByteArrayReverseToInt(tempByteArray); // read offsetValueTable fIn.Read(tempByteArray, 0, 4); sfoHeader.OffsetValueTable = SFOReaderUtilities.ByteArrayReverseToInt(tempByteArray); // read numberDataItem fIn.Read(tempByteArray, 0, 4); sfoHeader.NumberDataItems = SFOReaderUtilities.ByteArrayReverseToInt(tempByteArray); return(sfoHeader); }
/** * Reads an entry of the dataValueTable an return it as String * * @param fIn * @param sfoIndexTableEntry * @return String * @throws IOException */ public string ReadEntry(Stream sfoFile, SFOIndexTableEntry sfoIndexTableEntry) { byte[] entryByteArray = new byte[sfoIndexTableEntry.SizeValueData]; sfoFile.Read(entryByteArray, 0, sfoIndexTableEntry.SizeValueData); this.valueBytesReaded += sfoIndexTableEntry.SizeValueData; long offsetNextValue = sfoIndexTableEntry.OffsetDataValueInDataTable + sfoIndexTableEntry.SizeValueDataAndPadding; // korrekt! long skipBytes = offsetNextValue - this.valueBytesReaded; sfoFile.Seek(skipBytes, SeekOrigin.Current); this.valueBytesReaded += Convert.ToInt32(skipBytes); return(SFOReaderUtilities.ByteArrayToString(entryByteArray, true)); }
/** * Converts any byte[]-Array to a string with the specified encoding. * * @param byteArray * @param encoding * @return String */ public static string ByteArrayToString(byte[] byteArray) { return(SFOReaderUtilities.ByteArrayToString(byteArray, false)); }