예제 #1
0
        /// <summary>
        /// Method to convert a byte Array into Four tByte Chunks
        /// </summary>
        /// <param name="data">Byte array that contains data to convert</param>
        /// <returns>List containing FourByteChunks</returns>
        public static List <FourByteChunk> ArrayToFourByteChunks(Array data)
        {
            if (data.Length == 0)
            {
                return(null);
            }

            FourByteChunk byteChunkData       = new FourByteChunk();
            int           lengthByteChunkData = byteChunkData.OtherParameters.Length;

            // PES09182009 Modified so it would also work on Mobile
            int maxSize = System.Convert.ToInt32(Math.Ceiling((double)data.Length / (double)lengthByteChunkData));

            byte[] chunkBuffer = new byte[maxSize * lengthByteChunkData];
            Buffer.BlockCopy(data, 0, chunkBuffer, 0, data.Length);

            List <FourByteChunk> byteChunkList = new List <FourByteChunk>();

            for (int i = 0; i < maxSize; i++)
            {
                byteChunkData = new FourByteChunk();
                Buffer.BlockCopy(chunkBuffer, i * lengthByteChunkData, byteChunkData.OtherParameters, 0, lengthByteChunkData);

                byteChunkList.Add(byteChunkData);
            }

            return(byteChunkList);
        }
예제 #2
0
        /// <summary>
        /// Method to convert Four Byte Chunks into an Array
        /// </summary>
        /// <param name="chunkList">List that holds the FourByteChunks</param>
        /// <returns>Byte array</returns>
        public static Array FourByteChunksToArray(List <FourByteChunk> chunkList)
        {
            FourByteChunk byteChunkData       = new FourByteChunk();
            int           lengthByteChunkData = byteChunkData.OtherParameters.Length;

            // Data passed in does not exist.
            if (chunkList.Count == 0)
            {
                return(null);
            }

            byte[] chunkBuffer = new byte[chunkList.Count * lengthByteChunkData];

            for (int i = 0; i < chunkList.Count; i++)
            {
                Buffer.BlockCopy(chunkList[i].OtherParameters, 0, chunkBuffer, i * lengthByteChunkData, lengthByteChunkData);
            }

            return((Array)chunkBuffer);
        }