Increment void pointer by uint8_t,then recast to uint16_t?

Yes. But it's a lot less messy if you don't use void types.

char buffer[20];

char* ptr = buffer;

*( unsigned short*)(ptr+2) = 64000;
//buffer[2] = 0;
//buffer[3] = 250;

Careful of little vs big endian when you do this though.