protected override uint PackToField(SGIP_Field Field, byte[] Pack, uint Offset) { if (Field.IsProperty("MessageContent")) { //Field.ProAttribute.Length = (int)this.m_nSMMessageLength; if (m_nSMMessageLength <= 0) { m_sMessageContent = ""; Field.ProAttribute.Length = 0; } else { byte[] buf = new byte[m_nSMMessageLength]; Array.Copy(Pack, Offset, buf, 0, m_nSMMessageLength); if (m_nMessageCoding == SGIP_MessageCodings.Ucs2) { m_sMessageContent = Encoding.BigEndianUnicode.GetString(buf, 0, buf.Length); } else if (m_nMessageCoding == SGIP_MessageCodings.Gbk) { m_sMessageContent = Encoding.GetEncoding("gb2312").GetString(buf, 0, buf.Length); } else { m_sMessageContent = Encoding.ASCII.GetString(buf, 0, buf.Length); } Field.ProAttribute.Length = (int)m_nSMMessageLength; } Field.Build(); return((uint)Field.ProAttribute.Length); } return(base.PackToField(Field, Pack, Offset)); }
protected override uint FieldToPack(SGIP_Field Field, byte[] Pack, uint Offset) { if (Field.IsProperty("SMMessageLength")) { if (m_nMessageCoding == SGIP_MessageCodings.Ucs2) { m_nSMMessageLength = (uint)Encoding.BigEndianUnicode.GetByteCount(m_sMessageContent); } else if (m_nMessageCoding == SGIP_MessageCodings.Gbk) { m_nSMMessageLength = (uint)Encoding.GetEncoding("gb2312").GetByteCount(m_sMessageContent); } else { m_nSMMessageLength = (uint)Encoding.ASCII.GetByteCount(m_sMessageContent); } Field.ProInfo.SetValue(this, m_nSMMessageLength, null); Field.Build(); } else if (Field.IsProperty("MessageContent")) { //Field.ProAttribute.Length = (int)(System.Text.Encoding.Default.GetByteCount(null == m_sMessageContent ? "" : m_sMessageContent)); byte[] buf; if (m_nMessageCoding == SGIP_MessageCodings.Ucs2) { buf = Encoding.BigEndianUnicode.GetBytes(m_sMessageContent); } else if (m_nMessageCoding == SGIP_MessageCodings.Gbk) { buf = Encoding.GetEncoding("gb2312").GetBytes(m_sMessageContent); } else { buf = Encoding.ASCII.GetBytes(m_sMessageContent); } Array.Copy(buf, 0, Pack, Offset, buf.Length); Field.ProAttribute.Length = buf.Length; return((uint)buf.Length); } else if (Field.IsProperty("ChargeNumber")) { if (m_sChargeNumber != null && m_sChargeNumber.StartsWith("0000") == false && m_sChargeNumber.Length > 0 && m_sChargeNumber.StartsWith("86") == false) { m_sChargeNumber = "86" + m_sChargeNumber; } } else if (Field.IsProperty("UserNumber")) { if (m_sUserNumber.StartsWith("86") == false) { m_sUserNumber = "86" + m_sUserNumber; } } return(base.FieldToPack(Field, Pack, Offset)); }
protected virtual uint PackToField(SGIP_Field Field, byte[] Pack, uint Offset) { int nLength = Field.ProAttribute.Length; if (Field.DataType == SGIP_DataTypes.Uint) { uint nValue = 0; nValue ^= Pack[Offset + 0]; nValue = nValue << 8; nValue ^= Pack[Offset + 1]; nValue = nValue << 8; nValue ^= Pack[Offset + 2]; nValue = nValue << 8; nValue ^= Pack[Offset + 3]; Field.ProInfo.SetValue(this, nValue, null); } else if (Field.DataType == SGIP_DataTypes.Byte) { byte value = Pack[Offset]; Field.ProInfo.SetValue(this, value, null); } else { int n = 0; byte[] tmp = new byte[nLength]; Array.Copy(Pack, Offset, tmp, 0, nLength); foreach (byte b in tmp) { if (b == 0) { break; } n++; } string sValue = ""; if (n != 0) { byte[] tmp1 = new byte[n]; for (int i = 0; i < n && i < tmp.Length; i++) { tmp1[i] = tmp[i]; } sValue = System.Text.Encoding.ASCII.GetString(tmp1); } Field.ProInfo.SetValue(this, sValue, null); } Field.Build(); return((uint)nLength); }
protected virtual uint PackToField(SGIP_Field Field, byte[] Pack, uint Offset) { int nLength = Field.ProAttribute.Length; if (Field.DataType == SGIP_DataTypes.Uint) { uint nValue = 0; nValue ^= Pack[Offset + 0]; nValue = nValue << 8; nValue ^= Pack[Offset + 1]; nValue = nValue << 8; nValue ^= Pack[Offset + 2]; nValue = nValue << 8; nValue ^= Pack[Offset + 3]; Field.ProInfo.SetValue(this, nValue, null); } else if (Field.DataType == SGIP_DataTypes.Byte) { byte value = Pack[Offset]; Field.ProInfo.SetValue(this, value, null); } else { int n = 0; byte[] tmp = new byte[nLength]; Array.Copy(Pack, Offset, tmp, 0, nLength); foreach (byte b in tmp) { if (b == 0) { break; } n++; } string sValue = ""; if (n != 0) { byte[] tmp1 = new byte[n]; for (int i = 0; i < n && i < tmp.Length; i++) { tmp1[i] = tmp[i]; } sValue = System.Text.Encoding.ASCII.GetString(tmp1); } Field.ProInfo.SetValue(this, sValue, null); } Field.Build(); return (uint)nLength; }
protected override uint PackToField(SGIP_Field Field, byte[] Pack, uint Offset) { if (Field.IsProperty("MessageContent")) { //Field.ProAttribute.Length = (int)m_nSMMessageLength; byte[] buf = new byte[m_nSMMessageLength]; Array.Copy(Pack, Offset, buf, 0, m_nSMMessageLength); if (m_nMessageCoding == SGIP_MessageCodings.Ucs2) { m_sMessageContent = Encoding.BigEndianUnicode.GetString(buf, 0, buf.Length); } else if (m_nMessageCoding == SGIP_MessageCodings.Gbk) { m_sMessageContent = Encoding.GetEncoding("gb2312").GetString(buf, 0, buf.Length); } else { m_sMessageContent = Encoding.ASCII.GetString(buf, 0, buf.Length); } Field.ProAttribute.Length = buf.Length; Field.Build(); return (uint)buf.Length; } return base.PackToField(Field, Pack, Offset); }
protected override uint FieldToPack(SGIP_Field Field, byte[] Pack, uint Offset) { if (Field.IsProperty("SMMessageLength")) { if (m_nMessageCoding == SGIP_MessageCodings.Ucs2) { m_nSMMessageLength = (uint)Encoding.BigEndianUnicode.GetByteCount(m_sMessageContent); } else if (m_nMessageCoding == SGIP_MessageCodings.Gbk) { m_nSMMessageLength = (uint)Encoding.GetEncoding("gb2312").GetByteCount(m_sMessageContent); } else { m_nSMMessageLength = (uint)Encoding.ASCII.GetByteCount(m_sMessageContent); } Field.ProInfo.SetValue(this, m_nSMMessageLength, null); Field.Build(); } else if (Field.IsProperty("MessageContent")) { //Field.ProAttribute.Length = (int)(System.Text.Encoding.Default.GetByteCount(null == m_sMessageContent ? "" : m_sMessageContent)); byte[] buf; if (m_nMessageCoding == SGIP_MessageCodings.Ucs2) { buf = Encoding.BigEndianUnicode.GetBytes(m_sMessageContent); } else if (m_nMessageCoding == SGIP_MessageCodings.Gbk) { buf = Encoding.GetEncoding("gb2312").GetBytes(m_sMessageContent); } else { buf = Encoding.ASCII.GetBytes(m_sMessageContent); } Array.Copy(buf, 0, Pack, Offset, buf.Length); Field.ProAttribute.Length = buf.Length; return (uint)buf.Length; } else if (Field.IsProperty("ChargeNumber")) { if (m_sChargeNumber != null && m_sChargeNumber.StartsWith("0000") == false && m_sChargeNumber.Length > 0 && m_sChargeNumber.StartsWith("86") == false) { m_sChargeNumber = "86" + m_sChargeNumber; } } else if (Field.IsProperty("UserNumber")) { if (m_sUserNumber.StartsWith("86") == false) { m_sUserNumber = "86" + m_sUserNumber; } } return base.FieldToPack(Field, Pack, Offset); }