Esempio n. 1
0
        /**
         * Reads one entry of the indexTable and return it's values in a SFOIndexTableEntry-object
         * @param fIn
         * @return SFOIndexTableEntry
         * @throws IOException
         */
        public static SFOIndexTableEntry ReadEntry(Stream fIn)
        {
            SFOIndexTableEntry sfoIndexTableEntry = new SFOIndexTableEntry();

            byte[] tempByteArray1 = new byte[1];
            byte[] tempByteArray2 = new byte[2];
            byte[] tempByteArray4 = new byte[4];

            // read offsetKeyNameInKeyTable
            fIn.Read(tempByteArray2, 0, 2);
            sfoIndexTableEntry.SetOffsetKeyNameInKeyTable(tempByteArray2);

            // read dataAlignmentRequirements
            fIn.Read(tempByteArray1, 0, 1);
            sfoIndexTableEntry.SetDataAlignmentRequirements(tempByteArray1[0]);

            // read dataTypeValue
            fIn.Read(tempByteArray1, 0, 1);
            sfoIndexTableEntry.SetDataTypeValue(tempByteArray1[0]);

            // read sizeValueData
            fIn.Read(tempByteArray4, 0, 4);
            sfoIndexTableEntry.SetSizeValueData(SFOReaderUtilities.ByteArrayReverseToInt(tempByteArray4));

            // read sizeValueDataAndPadding
            fIn.Read(tempByteArray4, 0, 4);
            sfoIndexTableEntry.SetSizeValueDataAndPadding(SFOReaderUtilities.ByteArrayReverseToInt(tempByteArray4));

            // read offsetDataValueInDataTable
            fIn.Read(tempByteArray4, 0, 4);
            sfoIndexTableEntry.SetOffsetDataValueInDataTable(SFOReaderUtilities.ByteArrayReverseToInt(tempByteArray4));

            return(sfoIndexTableEntry);
        }
Esempio n. 2
0
        public static SFOHeader Read(Stream fIn)
        {
            SFOHeader sfoHeader = new SFOHeader();

            byte[] tempByteArray = new byte[4];

            // read FileType
            fIn.Read(tempByteArray, 0, 4);
            sfoHeader.SetFileType(SFOReaderUtilities.ByteArrayToString(tempByteArray));

            // read sfoVerion
            fIn.Read(tempByteArray, 0, 4);
            sfoHeader.SetSfoVersion(SFOReaderUtilities.ByteArrayToString(tempByteArray));

            // read offsetKeyTable
            fIn.Read(tempByteArray, 0, 4);
            sfoHeader.SetOffsetKeyTable(SFOReaderUtilities.ByteArrayReverseToInt(tempByteArray));

            // read offsetValueTable
            fIn.Read(tempByteArray, 0, 4);
            sfoHeader.SetOffsetValueTable(SFOReaderUtilities.ByteArrayReverseToInt(tempByteArray));

            // read numberDataItem
            fIn.Read(tempByteArray, 0, 4);
            sfoHeader.SetNumberDataItems(SFOReaderUtilities.ByteArrayReverseToInt(tempByteArray));

            return(sfoHeader);
        }
        /**
         * Reverse any byte[]-Array and converts it then to an int
         *
         * @param b
         * @return int
         */
        public static int ByteArrayReverseToInt(byte[] b)
        {
            byte[] bTemp = new byte[b.Length];

            for (int i = b.Length - 1, j = 0; i >= 0; i--, j++)
            {
                bTemp[j] = b[i];
            }

            return(SFOReaderUtilities.ByteArrayToInt(bTemp));
        }
        /**
         * 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.GetSizeValueData()];

            sfoFile.Read(entryByteArray, 0, sfoIndexTableEntry.GetSizeValueData());
            this.valueBytesReaded += sfoIndexTableEntry.GetSizeValueData();

            long offsetNextValue = sfoIndexTableEntry.GetOffsetDataValueInDataTable() +
                                   sfoIndexTableEntry.GetSizeValueDataAndPadding(); // korrekt!
            long skipBytes = offsetNextValue - this.valueBytesReaded;

            sfoFile.Seek(skipBytes, SeekOrigin.Current);
            this.valueBytesReaded += Convert.ToInt32(skipBytes);

            return(SFOReaderUtilities.ByteArrayToString(entryByteArray, true));
        }
 /**
  * Returns any byte[]-Array as an int
  *
  * @param b
  * @return Integer
  */
 public static int ByteArrayToInt(byte[] b)
 {
     return(SFOReaderUtilities.ByteArrayToInt(b, 0));
 }
 /**
  * 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));
 }