⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imetadataprocessor.cs

📁 本系统是在asp版《在线文件管理器》的基础上设计制作
💻 CS
字号:
//------------------------------------------------------------------------------
// <copyright company="Telligent Systems">
//     Copyright (c) Telligent Systems Corporation.  All rights reserved.
// </copyright> 
//------------------------------------------------------------------------------

using System;
using System.Collections;
using System.Drawing.Imaging;
using System.Text;
using System.Web;

namespace CommunityServer.Galleries.Components
{
	public abstract class IMetadataProcessor
	{

		#region Protected Members

		public byte[] dataSegment;
		protected Hashtable metadata;

		#endregion

		#region Constants and Enums

		public enum MetaFormat : int
		{
			BYTE		= 1,
			STRING		= 2,
			USHORT		= 3,
			ULONG		= 4,
			URATIONAL	= 5,
			SBYTE		= 6,
			UNDEFINED	= 7,
			SSHORT		= 8,
			SLONG		= 9,
			SRATIONAL	= 10,
			SINGLE		= 11,
			DOUBLE		= 12
		}

		protected static readonly int[] BYTES_PER_FORMAT = { 0, 1, 1, 2, 4, 8, 1, 1, 2, 4, 8, 4, 8 };

		#endregion

		#region Constructor

		public IMetadataProcessor() { }

		public IMetadataProcessor(byte[] data)
		{
			dataSegment = data;
		}

		public IMetadataProcessor(byte[] data, Hashtable metadata) : this(data)
		{
			this.metadata = metadata;
		}

		#endregion

		#region Public Properties

		public byte[] DataSegment
		{
			get { return dataSegment; }
			set { dataSegment = value; }
		}

		public Hashtable Metadata
		{
			get { return metadata; }
			set { metadata = value; }
		}

		#endregion

		public abstract void Extract();

		#region Helper Methods

		protected string DecodeStringValue(int offset, int maxLength)
		{
			int length = 0;
			while((offset + length) < dataSegment.Length
				&& dataSegment[offset + length] != '\0'
				&& length < maxLength) 
			{
				length++;
			}
			return Decode(offset, length, true);
		}

		protected string Decode(int offset, int length)
		{
			return Decode(offset, length, false);
		}

		protected string Decode(int offset, int length, bool stripWhitespace)
		{
			StringBuilder sb = new StringBuilder(length);
			for(int i=offset; i<length+offset; i++)
				if(!stripWhitespace || (dataSegment[i] != 0))
					sb.Append((char)dataSegment[i]);
			return sb.ToString();
		}

		#endregion

	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -