Beispiel #1
0
        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", ""));
        }
Beispiel #2
0
        public virtual byte[] GetBytesFromString(string cStr, DataCoding dataCoding)
        {
            if (cStr == null)
            {
                throw new ArgumentNullException("cStr");
            }
            if (cStr.Length == 0)
            {
                return(new byte[] { 0x00 });
            }
            byte[] bytes = null;
            switch (dataCoding)
            {
            case DataCoding.ASCII:
                bytes = System.Text.Encoding.ASCII.GetBytes(cStr);
                break;

            case DataCoding.Latin1:
                bytes = Latin1Encoding.GetBytes(cStr);
                break;

            case DataCoding.UCS2:
                bytes = UCS2Encoding.GetBytes(cStr);
                break;

            case DataCoding.SMSCDefault:
                bytes = SMSCDefaultEncoding.GetBytes(cStr);
                break;

            default:
                throw new SmppException(SmppErrorCode.ESME_RUNKNOWNERR, "Unsupported encoding");
            }
            return(bytes);
        }
        public virtual byte[] GetBytesFromCString(string cStr, DataCoding dataCoding, bool nullTerminated = true)
        {
            if (cStr == null)
            {
                throw new ArgumentNullException("cStr");
            }
            if (cStr.Length == 0)
            {
                return(new byte[] { 0x00 });
            }
            byte[] bytes = null;
            switch (dataCoding)
            {
            case DataCoding.ASCII:
                bytes = System.Text.Encoding.ASCII.GetBytes(cStr);
                break;

            case DataCoding.Latin1:
                bytes = Latin1Encoding.GetBytes(cStr);
                break;

            case DataCoding.UCS2:
                bytes = UCS2Encoding.GetBytes(cStr);
                break;

            case DataCoding.SMSCDefault:
                bytes = SMSCDefaultEncoding.GetBytes(cStr);
                break;

            default:
                throw new SmppException(SmppErrorCode.ESME_RUNKNOWNERR, "Unsupported encoding");
            }
            ByteBuffer buffer;

            if (nullTerminated)
            {
                buffer = new ByteBuffer(bytes, bytes.Length + 1);
                buffer.Append(new byte[] { 0x00 }); //Append a null charactor a the end
            }
            else
            {
                buffer = new ByteBuffer(bytes, bytes.Length);
            }

            return(buffer.ToBytes());
        }
Beispiel #4
0
        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
        }