示例#1
0
        public static byte[] ASCIIHexDecode(byte[] inb)
        {
            MemoryStream ostr  = new MemoryStream();
            bool         first = true;
            int          n1    = 0;

            for (int k = 0; k < inb.Length; ++k)
            {
                int ch = inb[k] & 0xff;
                if (ch == '>')
                {
                    break;
                }
                if (PRTokeniser.isWhitespace(ch))
                {
                    continue;
                }
                int n = PRTokeniser.getHex(ch);
                if (n == -1)
                {
                    throw new RuntimeException("Illegal character in ASCIIHexDecode.");
                }
                if (first)
                {
                    n1 = n;
                }
                else
                {
                    ostr.WriteByte((byte)((n1 << 4) + n));
                }

                first = !first;
            }
            if (!first)
            {
                ostr.WriteByte((byte)(n1 << 4));
            }
            return(ostr.ToArray());
        }
示例#2
0
        /** Decodes an escaped name in the form "/AB#20CD" into "AB CD".
         * @param name the name to decode
         * @return the decoded name
         */
        public static string decodeName(string name)
        {
            StringBuilder buf = new StringBuilder();

            try {
                int len = name.Length;
                for (int k = 1; k < len; ++k)
                {
                    char c = name[k];
                    if (c == '#')
                    {
                        c  = (char)((PRTokeniser.getHex(name[k + 1]) << 4) + PRTokeniser.getHex(name[k + 2]));
                        k += 2;
                    }
                    buf.Append(c);
                }
            }
            catch (Exception e) {
                e.GetType();
                // empty on purpose
            }
            return(buf.ToString());
        }