Qt — Как преобразовать int в QByteArray?
Вы не учли два важных факта - что char - знаковый тип и что не на всех машинах четырехбайтное число хранится в памяти в соответствии с порядком разрядов. (Остроконечные и тупоконечные архитектуры). 
Если числа нужно передавать по сети, их следует конвертировать в сетевой порядок байт. Это делает семейство методов hton...(). Обратное преобразование делают методы ntoh...().
В QByteArray можно затолкать вот так: int i=42;
QByteArray s=QByteArray::fromRawData(reinterpret_cast<const char*>(i),sizeof(i));
Да не все норм>>> ((-1&0xff) << 24) + ((-1&0xff) << 16) + ((-2&0xff) << 8) + (-35 &0xff) & 0xffffffff 
4294967005
>>> (-291) & 0xffffffff
4294967005
Нужно только понимать, что сдвиг вправо отрицательного числа - implementation defined behaviour, т.е. результаты будут вразумительными, но могут меняться в зависимости от платформы и компилятора.
(stackoverflow.com/questions/4009885/arithmetic-bit...)