Bio.IO.BAM.BAMFormatter.UpdateArrayType C# (CSharp) Method

UpdateArrayType() private static method

private static UpdateArrayType ( byte array, Bio.IO.SAM.SAMOptionalField field ) : void
array byte
field Bio.IO.SAM.SAMOptionalField
return void
        private static void UpdateArrayType(byte[] array, SAMOptionalField field)
        {
            byte[] temparray = new byte[4];
            char arraytype = field.Value[0];
            int arrayTypeSize = GetSizeOfArrayType(arraytype);
            string[] elements = field.Value.Split(DelimComma, StringSplitOptions.RemoveEmptyEntries);
            array[3] = (byte)arraytype;
            int arrayIndex = 4;

            temparray = Helper.GetLittleEndianByteArray(elements.Length - 1);
            array[arrayIndex++] = temparray[0];
            array[arrayIndex++] = temparray[1];
            array[arrayIndex++] = temparray[2];
            array[arrayIndex++] = temparray[3];


            //elemetns[0] contains array type;
            for (int i = 1; i < elements.Length; i++)
            {
                switch (arraytype)
                {
                    case 'A':  //  Printable character
                        temparray[0] = (byte)elements[i][0];
                        break;
                    case 'c': //signed 8-bit integer
                        temparray[0] = (byte)sbyte.Parse(elements[i], CultureInfo.InvariantCulture);
                        break;
                    case 'C': //unsigned 8-bit integer
                        temparray[0] = byte.Parse(elements[i], CultureInfo.InvariantCulture);
                        break;
                    case 's': // signed 16 bit integer
                        Int16 int16value = Int16.Parse(elements[i], CultureInfo.InvariantCulture);
                        temparray = Helper.GetLittleEndianByteArray(int16value);
                        break;
                    case 'S'://unsinged 16 bit integer
                        UInt16 uint16value = UInt16.Parse(elements[i], CultureInfo.InvariantCulture);
                        temparray = Helper.GetLittleEndianByteArray(uint16value);
                        break;
                    case 'i': // signed 32 bit integer
                        int int32value = int.Parse(elements[i], CultureInfo.InvariantCulture);
                        temparray = Helper.GetLittleEndianByteArray(int32value);
                        break;
                    case 'I': // unsigned 32 bit integer
                        uint uint32value = uint.Parse(elements[i], CultureInfo.InvariantCulture);
                        temparray = Helper.GetLittleEndianByteArray(uint32value);
                        break;
                    case 'f': // float
                        float floatvalue = float.Parse(elements[i], CultureInfo.InvariantCulture);
                        temparray = Helper.GetLittleEndianByteArray(floatvalue);
                        break;
                    default:
                        throw new Exception(string.Format(Properties.Resource.BAM_InvalidOptValType, arraytype));

                }

                for (int tempIndex = 0; tempIndex < arrayTypeSize; tempIndex++)
                {
                    array[arrayIndex++] = temparray[tempIndex];
                }
            }
        }