I would handle it serially as it comes in.
Look for the 04 to arrive, when it does go into a routine that pulls the bytes out two at a time.
Hex values between "1002 & 1003" is result temperature.
I don't understand this. Does it mean that anything between the markers 1002 & 1003 is a temperature or is it the values?
If you always pull bytes out two at a time say called B1 and B2 then you can combine them by using shift and logic OR and do a compare:-
val = b2 | (b1 << 8); // assume b1 is most significant byte
if(val == 0x1002) { // found start of temperature stuff