public virtual string GetStringFromBytes(byte[] data, DataCoding dataCoding) { if (data == null) { throw new ArgumentNullException("data"); } string result = null; switch (dataCoding) { case DataCoding.ASCII: result = System.Text.Encoding.ASCII.GetString(data); break; case DataCoding.Latin1: result = Latin1Encoding.GetString(data); break; case DataCoding.SMSCDefault: result = SMSCDefaultEncoding.GetString(data); break; case DataCoding.UCS2: result = UCS2Encoding.GetString(data); break; default: throw new SmppException(SmppErrorCode.ESME_RUNKNOWNERR, "Unsupported encoding"); } //Since a CString may contain a null terminating charactor //Replace all occurences of null charactors return(result.Replace("\u0000", "")); }
public virtual string GetCStringFromBytes(byte[] data, DataCoding dataCoding) { if (data == null) { throw new ArgumentNullException("data"); } if (data.Length < 1) { throw new ArgumentException("Array cannot be empty", "data"); } if (data[data.Length - 1] != 0x00) { throw new ArgumentException("CString must be terminated with a null charactor", "data"); } if (data.Length == 1) { return(""); } //The string is empty if it contains a single null charactor string result = null; switch (dataCoding) { case DataCoding.ASCII: result = System.Text.Encoding.ASCII.GetString(data); break; case DataCoding.Latin1: result = Latin1Encoding.GetString(data); break; case DataCoding.SMSCDefault: result = SMSCDefaultEncoding.GetString(data); break; case DataCoding.UCS2: result = UCS2Encoding.GetString(data); break; default: throw new SmppException(SmppErrorCode.ESME_RUNKNOWNERR, "Unsupported encoding"); } return(result.Replace("\x00", ""));//Replace the terminating null charactor }