I am having some problems when I try to get data from my sensor. I can read registers and get some data but I don't know how I should do the covnersion to get a real value.

I am using an arduino and I found some libraries. Those libraries tend to use this format:

x = ((int8_t)sensorData[1])*256+sensorData[0];

y = ((int8_t)sensorData[3])*256+sensorData[2];

z = ((int8_t)sensorData[5])*256+sensorData[4];

Where position 0 of sensorData starts at OUT_X_L (28h) and goes up.

Is this right? I have read something about left justified of LSB and I think it should be like:

Is it the same?

Apart from that, they use a formula to get mg values from the x,y and z values:

x = (int32_t)x*1000/(1024*mgScaleVel); //transform data to millig, for 2g scale axis*1000/(1024*16),

y = (int32_t)y*1000/(1024*mgScaleVel); //for 4g scale axis*1000/(1024*8),

z = (int32_t)z*1000/(1024*mgScaleVel); //for 8g scale axis*1000/(1024*4)

What is this about? where does this formula appear? Is it correct? How should I parse the data?

I can't edit my post. I forgot to add this where I put: "...LSB and I think it should be like:"

x = (int16_t)x_h<<8;

x |= x_l;

y = (int16_t)y_h<<8;

y |= x_l;

z = (int16_t)z_h<<8;

z |= x_l;