You really have to start with the datasheet for the specific I2C device you are working with.
Here is one where I needed to read a word (2 byte) register from a I2C ADC device. First I had to send a single byte 'register pointer' to the device and then request two bytes from the device.
//Function to read ADC conversion data from device
int getadcReading() // read 16 bit analog voltage reading
{
int data;
const int deviceAdd = 0x48; // ADS1115 address with address pin grounded
Wire.beginTransmission(deviceAdd); // transmit to I2c device address
Wire.send(0x00); // point to device register 0
Wire.endTransmission(); // stop transmitting
Wire.requestFrom(deviceAdd, 2); // request 2 bytes from slave device
while(Wire.available()) // need two bytes, MSB and LSB of converstion value
{
data = Wire.receive(); // get MSB of reading
data = data << 8; // shift it to high byte of data
data = data + Wire.receive(); // add LSB to data
}
return data;
}
Lefty