internal static void fprintf(Stream fd, string format, params object[] list) { string s = string.Format(CultureInfo.InvariantCulture, format, list); byte[] bytes = Latin1Encoding.GetBytes(s); fd.Write(bytes, 0, bytes.Length); }
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 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); }
private bool writeInkNames(ref TiffDirEntry dir) { dir.tdir_tag = TiffTag.INKNAMES; dir.tdir_type = TiffType.ASCII; byte[] bytes = Latin1Encoding.GetBytes(m_dir.td_inknames); dir.tdir_count = bytes.Length; return(writeByteArray(ref dir, 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()); }
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 }
/// <summary> /// Fetches an ASCII item from the file. /// </summary> private int fetchString(TiffDirEntry dir, out string cp) { byte[] bytes = null; if (dir.tdir_count <= 4) { int l = (int)dir.tdir_offset; if ((m_flags & TiffFlags.SWAB) == TiffFlags.SWAB) { SwabLong(ref l); } bytes = new byte[sizeof(int)]; writeInt(l, bytes, 0); cp = Latin1Encoding.GetString(bytes, 0, dir.tdir_count); return(1); } bytes = new byte[dir.tdir_count]; int res = fetchData(dir, bytes); cp = Latin1Encoding.GetString(bytes, 0, dir.tdir_count); return(res); }
/// <summary> /// Writes tags that are not special cased. /// </summary> private bool writeNormalTag(ref TiffDirEntry dir, TiffFieldInfo fip) { short wc = fip.WriteCount; dir.tdir_tag = fip.Tag; dir.tdir_type = fip.Type; dir.tdir_count = wc; switch (fip.Type) { case TiffType.SHORT: case TiffType.SSHORT: if (fip.PassCount) { short[] wp; int wc2; if (wc == TiffFieldInfo.Variable2) { FieldValue[] result = GetField(fip.Tag); wc2 = result[0].ToInt(); wp = result[1].ToShortArray(); dir.tdir_count = wc2; } else { // Assume TiffFieldInfo.Variable FieldValue[] result = GetField(fip.Tag); wc = result[0].ToShort(); wp = result[1].ToShortArray(); dir.tdir_count = wc; } if (!writeShortArray(ref dir, wp)) { return(false); } } else { if (wc == 1) { FieldValue[] result = GetField(fip.Tag); short sv = result[0].ToShort(); dir.tdir_offset = insertData(dir.tdir_type, sv); } else { FieldValue[] result = GetField(fip.Tag); short[] wp = result[0].ToShortArray(); if (!writeShortArray(ref dir, wp)) { return(false); } } } break; case TiffType.LONG: case TiffType.SLONG: case TiffType.IFD: if (fip.PassCount) { int[] lp; int wc2; if (wc == TiffFieldInfo.Variable2) { FieldValue[] result = GetField(fip.Tag); wc2 = result[0].ToInt(); lp = result[1].ToIntArray(); dir.tdir_count = wc2; } else { // Assume TiffFieldInfo.Variable FieldValue[] result = GetField(fip.Tag); wc = result[0].ToShort(); lp = result[1].ToIntArray(); dir.tdir_count = wc; } if (!writeLongArray(ref dir, lp)) { return(false); } } else { if (wc == 1) { // XXX handle LONG->SHORT conversion FieldValue[] result = GetField(fip.Tag); dir.tdir_offset = result[0].ToUInt(); } else { int[] lp; FieldValue[] result = GetField(fip.Tag); lp = result[0].ToIntArray(); if (!writeLongArray(ref dir, lp)) { return(false); } } } break; case TiffType.RATIONAL: case TiffType.SRATIONAL: if (fip.PassCount) { float[] fp; int wc2; if (wc == TiffFieldInfo.Variable2) { FieldValue[] result = GetField(fip.Tag); wc2 = result[0].ToInt(); fp = result[1].ToFloatArray(); dir.tdir_count = wc2; } else { // Assume TiffFieldInfo.Variable FieldValue[] result = GetField(fip.Tag); wc = result[0].ToShort(); fp = result[1].ToFloatArray(); dir.tdir_count = wc; } if (!writeRationalArray(ref dir, fp)) { return(false); } } else { if (wc == 1) { float[] fv = new float[1]; FieldValue[] result = GetField(fip.Tag); fv[0] = result[0].ToFloat(); if (!writeRationalArray(ref dir, fv)) { return(false); } } else { FieldValue[] result = GetField(fip.Tag); float[] fp = result[0].ToFloatArray(); if (!writeRationalArray(ref dir, fp)) { return(false); } } } break; case TiffType.FLOAT: if (fip.PassCount) { float[] fp; int wc2; if (wc == TiffFieldInfo.Variable2) { FieldValue[] result = GetField(fip.Tag); wc2 = result[0].ToInt(); fp = result[1].ToFloatArray(); dir.tdir_count = wc2; } else { // Assume TiffFieldInfo.Variable FieldValue[] result = GetField(fip.Tag); wc = result[0].ToShort(); fp = result[1].ToFloatArray(); dir.tdir_count = wc; } if (!writeFloatArray(ref dir, fp)) { return(false); } } else { if (wc == 1) { float[] fv = new float[1]; FieldValue[] result = GetField(fip.Tag); fv[0] = result[0].ToFloat(); if (!writeFloatArray(ref dir, fv)) { return(false); } } else { FieldValue[] result = GetField(fip.Tag); float[] fp = result[0].ToFloatArray(); if (!writeFloatArray(ref dir, fp)) { return(false); } } } break; case TiffType.DOUBLE: if (fip.PassCount) { double[] dp; int wc2; if (wc == TiffFieldInfo.Variable2) { FieldValue[] result = GetField(fip.Tag); wc2 = result[0].ToInt(); dp = result[1].ToDoubleArray(); dir.tdir_count = wc2; } else { // Assume TiffFieldInfo.Variable FieldValue[] result = GetField(fip.Tag); wc = result[0].ToShort(); dp = result[1].ToDoubleArray(); dir.tdir_count = wc; } if (!writeDoubleArray(ref dir, dp)) { return(false); } } else { if (wc == 1) { double[] dv = new double[1]; FieldValue[] result = GetField(fip.Tag); dv[0] = result[0].ToDouble(); if (!writeDoubleArray(ref dir, dv)) { return(false); } } else { FieldValue[] result = GetField(fip.Tag); double[] dp = result[0].ToDoubleArray(); if (!writeDoubleArray(ref dir, dp)) { return(false); } } } break; case TiffType.ASCII: { FieldValue[] result = GetField(fip.Tag); string cp; if (fip.PassCount) { cp = result[1].ToString(); } else { cp = result[0].ToString(); } byte[] stringBytes = Latin1Encoding.GetBytes(cp); // If this last character is a '\0' null char if (stringBytes.Length != 0 && stringBytes[stringBytes.Length - 1] == 0) { dir.tdir_count = stringBytes.Length; if (!writeByteArray(ref dir, stringBytes)) { return(false); } } else { // add zero ('\0') at the end of the byte array byte[] totalBytes = new byte[stringBytes.Length + 1]; Buffer.BlockCopy(stringBytes, 0, totalBytes, 0, stringBytes.Length); dir.tdir_count = totalBytes.Length; if (!writeByteArray(ref dir, totalBytes)) { return(false); } } } break; case TiffType.BYTE: case TiffType.SBYTE: if (fip.PassCount) { byte[] cp; int wc2; if (wc == TiffFieldInfo.Variable2) { FieldValue[] result = GetField(fip.Tag); wc2 = result[0].ToInt(); cp = result[1].ToByteArray(); dir.tdir_count = wc2; } else { // Assume TiffFieldInfo.Variable FieldValue[] result = GetField(fip.Tag); wc = result[0].ToShort(); cp = result[1].ToByteArray(); dir.tdir_count = wc; } if (!writeByteArray(ref dir, cp)) { return(false); } } else { if (wc == 1) { byte[] cv = new byte[1]; FieldValue[] result = GetField(fip.Tag); cv[0] = result[0].ToByte(); if (!writeByteArray(ref dir, cv)) { return(false); } } else { FieldValue[] result = GetField(fip.Tag); byte[] cp = result[0].ToByteArray(); if (!writeByteArray(ref dir, cp)) { return(false); } } } break; case TiffType.UNDEFINED: { byte[] cp; int wc2; if (wc == TiffFieldInfo.Variable) { FieldValue[] result = GetField(fip.Tag); wc = result[0].ToShort(); cp = result[1].ToByteArray(); dir.tdir_count = wc; } else if (wc == TiffFieldInfo.Variable2) { FieldValue[] result = GetField(fip.Tag); wc2 = result[0].ToInt(); cp = result[1].ToByteArray(); dir.tdir_count = wc2; } else { FieldValue[] result = GetField(fip.Tag); cp = result[0].ToByteArray(); } if (!writeByteArray(ref dir, cp)) { return(false); } } break; case TiffType.NOTYPE: break; } return(true); }