public static void WriteString(BinaryWriter writer, string text, int lengthbits) { if (lengthbits == 8) { writer.Write((byte)text.Length); } else if (lengthbits == 16) { writer.Write((ushort)text.Length); } else { throw new ArgumentException("Invalid lengthbits, must be 8 or 16."); } if (TextEncoding.FitsInASCIIEncoding(text)) { writer.Write((byte)0); writer.Write(ConversionHelper.GetBytes(text)); } else { writer.Write((byte)1); writer.Write(Encoding.Unicode.GetBytes(text)); } }
public static int GetStringDataLength(string text) { if (TextEncoding.FitsInASCIIEncoding(text)) { return(text.Length + 3); } else { return(text.Length * 2 + 3); } }
public static int GetStringDataLength(string text) { checked { int result; if (TextEncoding.FitsInASCIIEncoding(text)) { result = Encoding.ASCII.GetByteCount(text) + 3; } else { result = text.Length * 2 + 3; } return(result); } }