Take a look at the attached help document about numeric_std.
As you can see, one conversion and one cast are necessary to go from integer to std_logic_vector:
std_logic_vector_signal <= std_logic_vector(to_unsigned(integer_result, std_logic_vector_signal'length));
However, if you don't want the result as integer, I recommend you to use type "unsigned". It is intended to represent a number, but you can do the same bit-manipulation as with std_logic_vector.
Then you only need the "to_unsigned" conversion.