long long unsigned int is implicitly convertible to long unsigned int (aka unsigned long), it may only show a warning due to potential type narrowing. So unless you want to remove the warning a cast is not needed and when you do use a cast, static_cast should be used.
This test code works fine on
Ideone.
#include <iostream>
int main() {
unsigned long ul = 10;
long long unsigned int llui = 20;
std::cout << ul << " " << llui << "\n";
ul = llui;
ul = static_cast<long unsigned int>(llui);
std::cout << ul << " " << llui << "\n";
}
My guess is that because there was an issue ("hanging"?) when using an implicit cast or a static_cast, you assumed that this must be the origin of the issue, while it actually might be somewhere else entirely (see also
XY Problem).
So what exactly is your problem with an implicit cast?