public override BigDecimal FromBigEndian(byte[] value) { var scaleBytes = new byte[4]; var numberBytes = new byte[value.Length - 4]; Array.Copy(value, 0, scaleBytes, 0, scaleBytes.Length); Array.Copy(value, scaleBytes.Length, numberBytes, 0, numberBytes.Length); var int32Converter = new Int32TypeConverter(); var bigIntegerConverter = new IntegerTypeConverter(); var scale = int32Converter.FromBigEndian(scaleBytes); var number = bigIntegerConverter.FromBigEndian(numberBytes); return(new BigDecimal(number, scale)); }
public override byte[] ToBigEndian(BigDecimal value) { var scale = value.Scale; var number = value.UnscaledValue; var int32Converter = new Int32TypeConverter(); var bigIntegerConverter = new IntegerTypeConverter(); var scaleBytes = int32Converter.ToBigEndian(scale); var numberBytes = bigIntegerConverter.ToBigEndian(number); var bytes = new byte[scaleBytes.Length + numberBytes.Length]; Array.Copy(scaleBytes, 0, bytes, 0, scaleBytes.Length); Array.Copy(numberBytes, 0, bytes, scaleBytes.Length, numberBytes.Length); return(bytes); }