private void PrintCharacter(StringBuilder sb, object arg)
{
if (arg == null)
{
PrintString(sb, "null");
return;
}
String s = null;
switch (Type.GetTypeCode(arg.GetType()))
{
case TypeCode.Char:
s = ((Char)arg).ToString();
break;
case TypeCode.Byte:
s = Encoding.Unicode.GetString(new byte[] {(byte)arg, 0 });
break;
case TypeCode.Int16:
s = Encoding.Unicode.GetString(System.BitConverter.GetBytes((Int16)arg));
break;
case TypeCode.UInt16:
s = Encoding.Unicode.GetString(System.BitConverter.GetBytes((UInt16)arg));
break;
case TypeCode.Int32:
s = Encoding.UTF32.GetString(System.BitConverter.GetBytes((Int32)arg));
break;
case TypeCode.UInt32:
s = Encoding.UTF32.GetString(System.BitConverter.GetBytes((UInt32)arg));
break;
default:
FailConversion(_conversion, arg);
break;
}
PrintString(sb, s);
}