Raw long long bytes to signed long long integer?

Доброго времени суток. В общем вопрос такой:
Есть бинарник в котором записано значение long long, и есть некий "reader" который читает последовательность первых 8-ми байт. При переводе последовательности прочитанных байт в число, знак опускается. Как правильно перевести прочитанную последовательность байт без потери знака?

p.s
Чтение бинарника происходит из lua скрипта.
  • Вопрос задан
  • 131 просмотр
Решения вопроса 1
TrueBers
@TrueBers
Гуглю за еду
Знак никак не может опускаться. 64 бита -- это 64 бита. И как их представлять -- проблема конкретной задачи, а не числа.
За знак обычно отвечает самый старший бит. Если его интерпретировать не как флаг, а как участника разрядности числа, то у вас будет беззнаковое число, диапазоном от 0 до 2^64. Если его учитывать как бит знаковости, то можно получить диапазон от -2^63 (старший бит в единице) до 2^63-1 (старший бит в нуле).

Как его интерпретировать зависит только от того, какой тип вы выберете при чтении: signed long long или unsigned long long.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы