2016-11-20 2 views

ответ

1

QByteArray - массив из char с. По-видимому, char на вашей платформе подписан и 8-битный. Таким образом, ваша проблема может быть дистиллированным, чтобы:

char c = 0x80; 
quint32 = c << 8; 

Стандартных мандаты, что:

N4606 § 4.8 [conv.integral]/3

Если подписан типа назначения, значение не изменяется, если он может быть , представленный в типе назначения; в противном случае значение равно .

В этом случае (как обычно на 2 в системах комплемента), 0x80 отображается в std::numeric_limits<char>::min() == -128, что логично, поскольку они имеют один и тот же базовый битовый шаблон.

В настоящее время -128 << 8 определяется как -128 * 2 , что составляет -32768.

Наконец, преобразование из -32768 до 32 битового целого числа без знака хорошо определены и выходы 4294934528

+0

Я закончил с использованием 'QDataStream' для преобразования. В случае, если кто-то заинтересован. – Barracuda

Смежные вопросы