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); } }
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()); }
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()); }
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()); }
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); }