public static byte[] Encode(byte[] input, byte escapeChar, byte space, byte[] forbidden, bool uppercase)
{
using (MemoryStream stream = new MemoryStream(input.Length * 2))
{
for (int i = 0; i < input.Length; i++)
{
if (input[i] == 0x20)
{
stream.WriteByte(space);
}
else if (((input[i] < 0x20) || (input[i] > 0x7e)) || ByteArrayContains(forbidden, input[i]))
{
stream.WriteByte(escapeChar);
stream.Write(Byte2Hex(input[i], !uppercase ? lcHexChars : ucHexChars), 0, 2);
}
else
{
stream.WriteByte(input[i]);
}
}
return stream.ToArray();
}
}