コード例 #1
0
        public static int ReadIndefiniteLengthBigEndian(DICOMBinaryReader dr)
        {
            var startingPos = dr.StreamPosition;

            while (!IsEndOfSequenceBigEndian(dr))
            {
                dr.StreamPosition -= 8;
                SequenceItemReader.SkipItemBigEndian(dr);
            }
            return(CalculateLength(dr, startingPos) - 8);
        }
コード例 #2
0
        public static int ReadIndefiniteLengthLittleEndian(DICOMBinaryReader dr, TransferSyntax syntax)
        {
            var startingPos = dr.StreamPosition;

            while (!IsEndOfSequenceLittleEndian(dr))
            {
                dr.StreamPosition -= 8;
                SequenceItemReader.SkipItemLittleEndian(dr, syntax);
            }
            return(CalculateLength(dr, startingPos) - 8);
        }
コード例 #3
0
        public static List <DICOMObject> ReadItems(byte[] data, TransferSyntax syntax)
        {
            var objects = new List <DICOMObject>();

            using (var dr = new DICOMBinaryReader(data))
            {
                while (dr.StreamPosition < dr.StreamLength)
                {
                    switch (syntax)
                    {
                    case TransferSyntax.EXPLICIT_VR_BIG_ENDIAN:
                        objects.Add(SequenceItemReader.ReadBigEndian(dr, syntax));
                        break;

                    default:
                        objects.Add(SequenceItemReader.ReadLittleEndian(dr, syntax));
                        break;
                    }
                }
            }
            return(objects);
        }