I'm working on a similar project with a different sensor. You might get some useful hints here: http://wiring.org.co/learning/libraries/hmc6352sparkfun.html
and I found this snippet of code and it's comments informative:
//"Get Data. Compensate and Calculate New Heading"
Wire.write(HMC6352ReadAddress); // The "Get Data" command
//time delays required by HMC6352 upon receipt of the command
//Get Data. Compensate and Calculate New Heading : 6ms
Wire.requestFrom(HMC6352SlaveAddress, 2); //get the two data bytes, MSB and LSB
//"The heading output data will be the value in tenths of degrees //from zero to 3599 and provided in binary format over the two bytes."
byte MSB =Wire.read();
byte LSB =Wire.read();
int headingSum = (MSB <<
+ LSB;//(MSB / LSB sum)
int headingInt = headingSum / 10;