public int Get(int tag, string value, MessageEncoding encoder, Span <byte> into) { var encode = encoder.GetEncoder(); var currentOffset = IntegerToFixConverter.Instance.Convert(tag, into); int result = currentOffset; into = into.Slice(currentOffset); into[0] = Constants.EqualsByte; into = into.Slice(1); currentOffset = encode.GetBytes(value, into); result += currentOffset; into = into.Slice(currentOffset); into[0] = Constants.SOHByte; return(result + 2); }
public MessageBuilder AddTag(int tag, string value, MessageEncoding encoding) { if (_encoding == null) { _encoding = encoding; } else if (_encoding != encoding) { throw new InvalidOperationException("Encoding is already set"); } int expectedLength = (int)Math.Floor(Math.Log10(tag) + 1) + encoding.GetEncoder().GetByteCount(value) + 2; EnsureSize(expectedLength); _currentLength += _converter.Get(tag, value, encoding, _builderArray.AsSpan(_currentLength)); return(this); }