Есть ли здесь UB? Похоже на strict aliasing. Если исправлять проблему, то придется buf[0] | (buf[1] << 8) | (buf[2] << 16) | (buf[3] << 24) (еще зависит от порядка байт, но не...