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

📄 varbinary.cs

📁 短信网关的应用开发
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.Text;

namespace SMPP.Variable
{
	/// <summary>
	/// 可变长度的二进制串
	/// </summary>
	public class VARBinary : Variable
	{
		#region IVariable 成员

		public override byte[] GetBytes()
		{
			return _Value;
		}

		public override int Length
		{
			get
			{
				return _Value.Length;
			}
		}

		public override void Parse(byte[] Datas, ref int Index)
		{
			int len;
			(Owner[LenFieldIndex] as Number).GetValue(out len);
			len = len * _LenMultiple;

			_Value = new byte[len];

			Array.Copy(Datas, Index, _Value, 0, len);
			Index += len;
		}

		#endregion

		private int _LenFieldIndex = -1;
		public int LenFieldIndex
		{
			get
			{
				return _LenFieldIndex;
			}
		}

		private int _LenMultiple = 1;
		public int LenMultiple
		{
			get
			{
				return _LenMultiple;
			}
		}

		protected byte[] _Value = new byte[0];
		public byte[] Value
		{
			get
			{
				return _Value;
			}
			set
			{
				int len = value.Length % LenMultiple == 0 ? value.Length / LenMultiple : value.Length / LenMultiple + 1;
				(Owner[LenFieldIndex] as Number).SetValue(ref len);

				_Value = new byte[len * LenMultiple];
				Array.Copy(value, 0, _Value, 0, value.Length > _Value.Length ? _Value.Length : value.Length);
			}
		}

		/// <summary>
		/// 创建变长二进制串实例,长度倍数为1
		/// </summary>
		/// <param name="LenFieldIndex">长度字段索引</param>
		public VARBinary(int LenFieldIndex)
		{
			this._LenFieldIndex = LenFieldIndex;
		}

		/// <summary>
		/// 创建变长二进制串实例
		/// </summary>
		/// <param name="LenFieldIndex">长度字段索引</param>
		/// <param name="LenMultiple">长度倍数</param>
		public VARBinary(int LenFieldIndex, int LenMultiple)
		{
			this._LenFieldIndex = LenFieldIndex;
			this._LenMultiple = LenMultiple;
		}
	}
}

⌨️ 快捷键说明

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