private void GetValue() { int status = 0; switch (_data_type) { case HDF4Helper.DataTypeDefinitions.DFNT_CHAR8: //string //case HDF4Helper.DataTypeDefinitions.DFNT_CHAR: case HDF4Helper.DataTypeDefinitions.DFNT_UCHAR8: //case HDF4Helper.DataTypeDefinitions.DFNT_UCHAR: { IntPtr ptr = Marshal.AllocHGlobal(_count * 8); status = HDF4Helper.SDreadattr(_sd_id, _attr_index, ptr); var buffer = new byte[_count]; Marshal.Copy(ptr, buffer, 0, _count); Marshal.FreeHGlobal(ptr); _value = Encoding.ASCII.GetString(buffer); //new ASCIIEncoding() } break; case HDF4Helper.DataTypeDefinitions.DFNT_INT8: case HDF4Helper.DataTypeDefinitions.DFNT_UINT8: { IntPtr ptr = Marshal.AllocHGlobal(_count * 8); status = HDF4Helper.SDreadattr(_sd_id, _attr_index, ptr); var buffer = new byte[_count]; Marshal.Copy(ptr, buffer, 0, _count); Marshal.FreeHGlobal(ptr); _value = buffer; } break; case HDF4Helper.DataTypeDefinitions.DFNT_INT16: case HDF4Helper.DataTypeDefinitions.DFNT_UINT16: { IntPtr ptr = Marshal.AllocHGlobal(_count * 16); status = HDF4Helper.SDreadattr(_sd_id, _attr_index, ptr); var buffer = new short[_count]; Marshal.Copy(ptr, buffer, 0, _count); Marshal.FreeHGlobal(ptr); _value = buffer; } break; case HDF4Helper.DataTypeDefinitions.DFNT_INT32: case HDF4Helper.DataTypeDefinitions.DFNT_UINT32: { IntPtr ptr = Marshal.AllocHGlobal(_count * 32); status = HDF4Helper.SDreadattr(_sd_id, _attr_index, ptr); var buffer = new int[_count]; Marshal.Copy(ptr, buffer, 0, _count); Marshal.FreeHGlobal(ptr); _value = buffer; } break; case HDF4Helper.DataTypeDefinitions.DFNT_FLOAT32: { IntPtr ptr = Marshal.AllocHGlobal(_count * 32); status = HDF4Helper.SDreadattr(_sd_id, _attr_index, ptr); var buffer = new float[_count]; Marshal.Copy(ptr, buffer, 0, _count); Marshal.FreeHGlobal(ptr); _value = buffer; } break; case HDF4Helper.DataTypeDefinitions.DFNT_FLOAT64: { IntPtr ptr = Marshal.AllocHGlobal(_count * 64); status = HDF4Helper.SDreadattr(_sd_id, _attr_index, ptr); var buffer = new double[_count]; Marshal.Copy(ptr, buffer, 0, _count); Marshal.FreeHGlobal(ptr); _value = buffer; } break; case HDF4Helper.DataTypeDefinitions.DFNT_NINT8: break; case HDF4Helper.DataTypeDefinitions.DFNT_NUINT8: break; case HDF4Helper.DataTypeDefinitions.DFNT_NINT16: break; case HDF4Helper.DataTypeDefinitions.DFNT_NUINT16: break; case HDF4Helper.DataTypeDefinitions.DFNT_NINT32: break; case HDF4Helper.DataTypeDefinitions.DFNT_NUINT32: break; case HDF4Helper.DataTypeDefinitions.DFNT_NFLOAT32: break; case HDF4Helper.DataTypeDefinitions.DFNT_NFLOAT64: break; default: break; } }