Построить целое число из байтовых значений в C - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть несколько переменных в C:

  • char* data указатель на данные (всегда в LE)
  • int dataStart - data смещение, с которого начинается мое целое число
  • int dataLength - количество байтов с целочисленными данными (0<=dataLength<=8)
  • int sign - либо 1 для положительных чисел, либо -1 для отрицательных значений

Как я могу преобразовать его в __int64 (или мне нужно что-то еще?) Значение в C?

Я знаю, что целые числа ограничены 2^63−1.

1 Ответ

0 голосов
/ 17 апреля 2019
int64_t makeint(const char *buff, size_t offset, size_t offsetinint, size_t len, int minus)
{
    union
    {
        int64_t i64;
        uint8_t u8[8]
    }d64;

    offsetinint = offsetinint & 7;
    memset(&d64, 0, sizeof(d64));

    memcpy(&d64.u8[offsetinint], len > (8 - offsetinint) ? (8 - offsetinint) : len, buff + offset);
    d64.i64 *= -1 * !!minus;
    return d64.i64;
}
...