Пример #1
0
 public string Format(string format, object arg, IFormatProvider formatProvider)
 {
     BinaryFormatter.StringFormat format1 = this.GetFormat(arg, format);
     if (format1.VarBase == 0)
     {
         return(this.HandleOtherFormats(format, arg));
     }
     if (arg is sbyte)
     {
         byte[] data = new byte[1]
         {
             byte.Parse(((sbyte)arg).ToString("X2"), NumberStyles.HexNumber)
         };
         return(this.HandleByteFormat(format1, data));
     }
     if (arg is byte)
     {
         byte[] data = new byte[1] {
             (byte)arg
         };
         return(this.HandleByteFormat(format1, data));
     }
     if (arg is byte[])
     {
         byte[] data = arg as byte[];
         return(this.HandleByteArrayFormat(format1, data));
     }
     if (arg is short)
     {
         return(this.HandleNumericFormat(format1, BitConverter.GetBytes((short)arg)));
     }
     if (arg is int)
     {
         return(this.HandleNumericFormat(format1, BitConverter.GetBytes((int)arg)));
     }
     if (arg is long)
     {
         return(this.HandleNumericFormat(format1, BitConverter.GetBytes((long)arg)));
     }
     if (arg is ushort)
     {
         return(this.HandleNumericFormat(format1, BitConverter.GetBytes((ushort)arg)));
     }
     if (arg is uint)
     {
         return(this.HandleNumericFormat(format1, BitConverter.GetBytes((uint)arg)));
     }
     if (arg is ulong)
     {
         return(this.HandleNumericFormat(format1, BitConverter.GetBytes((ulong)arg)));
     }
     try
     {
         return(this.HandleOtherFormats(format, arg));
     }
     catch (FormatException ex)
     {
         throw new FormatException(string.Format("The format of '{0}' is invalid.", (object)format), (Exception)ex);
     }
 }
Пример #2
0
        private string HandleByteArrayFormat(BinaryFormatter.StringFormat format, byte[] data)
        {
            StringBuilder stringBuilder = new StringBuilder();
            string        str           = string.Empty;

            for (int index = 0; index < data.Length; ++index)
            {
                if (format.WordFormat)
                {
                    if (index % 2 == 0)
                    {
                        stringBuilder.Append(" ");
                    }
                }
                else
                {
                    stringBuilder.Append(" ");
                }
                if (index < data.Length)
                {
                    str = this.FillByte(format, Convert.ToString(data[index], format.VarBase));
                }
                stringBuilder.Append(str);
                str = string.Empty;
            }
            return(stringBuilder.ToString().Trim());
        }
Пример #3
0
        private string HandleByteFormat(BinaryFormatter.StringFormat format, byte[] data)
        {
            StringBuilder stringBuilder = new StringBuilder();

            if (data.Length != 0)
            {
                stringBuilder.Append(this.FillByte(format, Convert.ToString(data[0], format.VarBase)));
                if (format.WordFormat)
                {
                    stringBuilder.Insert(0, "00");
                }
            }
            return(stringBuilder.ToString().Trim());
        }
Пример #4
0
        private string HandleNumericFormat(BinaryFormatter.StringFormat format, byte[] data)
        {
            StringBuilder stringBuilder = new StringBuilder();
            int           num           = 1;

            for (int upperBound = data.GetUpperBound(0); upperBound >= data.GetLowerBound(0); --upperBound)
            {
                stringBuilder.Append(this.FillByte(format, Convert.ToString(data[upperBound], format.VarBase)));
                if (format.WordFormat)
                {
                    if (num++ % 2 == 0)
                    {
                        stringBuilder.Append(" ");
                    }
                }
                else
                {
                    stringBuilder.Append(" ");
                }
            }
            return(stringBuilder.ToString().Trim());
        }
Пример #5
0
        private string FillByte(BinaryFormatter.StringFormat format, string data)
        {
            string empty = string.Empty;

            return((format.VarBase != 2 ? new string('0', 2 - data.Length) : new string('0', 8 - data.Length)) + data);
        }