Why all these unneeded multiplications, divisions and shifts? You are loosing precious resources.
I don't know if there is big or little endian, so here are both.
//assume bytes_to_write is original (x2), not modified to 24 (x3)
//Big endian
for (int i = 0, j=0; i < bytes_to_write; i+=2, j+=3) {
current_pos_16[j] = current_pos[i];
current_pos_16[j+1] = current_pos[i+1];
current_pos_16[j+2] = 0;
}
//Little endian
for (int i = 0, j=0; i < bytes_to_write; i+=2, j+=3) {
current_pos_16[j] = 0;
current_pos_16[j+1] = current_pos[i];
current_pos_16[j+2] = current_pos[i+1];
}