private static ByteString Encode(ByteString payload, int fieldOffset, int fieldLength, ByteOrder byteOrder) { var h = new ByteStringBuilder().PutInt(payload.Count, byteOrder).Result(); var header = byteOrder == ByteOrder.LittleEndian ? h.Take(fieldLength) : h.Drop(4 - fieldLength); return(ByteString.Create(new byte[fieldOffset]) + header + payload); }