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