Beispiel #1
0
        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]);
                }
            }
        }