📄 imetadataprocessor.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 + -