There is an overload of GetBytes
that does what you want.
Encoding.Unicode.GetBytes(str, 0, str.Length, buffer, k);
// or, if you need to do something more complicated inside the `for` loop
for (var i = 0; i < str.Length; i++)
{
Encoding.Unicode.GetBytes(str, i, 1, buffer, i*2 + k);
}