public static void Write(Stream stream, string name) { stream.WriteByte((byte)'/'); byte[] buf = System.Text.Encoding.UTF8.GetBytes(name); int len = buf.Length; for (int i = 0; i < len; ++i) { if (buf[i] < 33 || buf[i] == '#' || Lexer.IsSpecialCharacter(buf[i])) { stream.WriteByte((byte)'#'); byte hi = (byte)(buf[i] / 16); byte lo = (byte)(buf[i] - hi * 16); if (hi >= 10) { hi = (byte)('A' - 10 + hi); } else { hi += (byte)'0'; } if (lo >= 10) { lo = (byte)('A' - 10 + lo); } else { lo += (byte)'0'; } stream.WriteByte(hi); stream.WriteByte(lo); } else { stream.WriteByte(buf[i]); } } }