Getting strange chars in Serial output from time to time

Thanks for the suggestions, Whandall I figured there was likely an easier way but had not had a chance to investigate using bitshifting. I have updated my code below. As an aside, there is a lot of code so was hesitating posting the whole thing.

            // A9 02 0D 00 00 00 03 00 01 00 00 02 00 06 00 00 A0 
       
            uint32_t statkal = (((notifydata[4] << 8) + notifydata[5]) << 8) + notifydata[6];
            uint32_t statdistance = ((notifydata[7] << 8) + notifydata[8]);
            uint32_t statstep = (((notifydata[9] << 8) + notifydata[10]) << 8) + notifydata[11];
            uint32_t stattime = ((notifydata[12] << 8) + notifydata[13]);
            
            char buff[100] = "";
            sprintf(buff, "Data - Kcal: %lu  Time:%lu  Distance:%lu  Step: %lu", statkal, stattime, statdistance, statstep);
            Serial.println(buff);

As an aditional test, I actually impelmented the test suggested by Johnwasser. This yielded similar results. Therefore at this point I don't believe I have an issue with my code, and that some other influence is impacting this.

            // A9 02 0D 00 00 00 03 00 01 00 00 02 00 06 00 00 A0 
            byte notifydatab[18];

            for (int i = 0; i < 18; i++)
            {
              notifydatab[i] = random(256);
            }

            uint32_t statkal = (((notifydatab[4] << 8) + notifydatab[5]) << 8) + notifydatab[6];
            uint32_t statdistance = ((notifydatab[7] << 8) + notifydatab[8]);
            uint32_t statstep = (((notifydatab[9] << 8) + notifydatab[10]) << 8) + notifydatab[11];
            uint32_t stattime = ((notifydatab[12] << 8) + notifydatab[13]);
            
            char buff[100] = "";
            sprintf(buff, "Data - Kcal: %lu  Time:%lu  Distance:%lu  Step: %lu", statkal, stattime, statdistance, statstep);
            Serial.println(buff);