kirill_782
@kirill_782
Днем я Маринетт

Как упаковать числа без битовых операций?

Есть 4 байта места. Есть несколько чисел полбайтовых. Как полбайтовые числа упаковать в 4 байтвое число, при помощи арифметических действий?
  • Вопрос задан
  • 45 просмотров
Решения вопроса 2
  • jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    Как полбайтовые числа упаковать в 4 байтвое число, при помощи арифметических действий?

    Умножением/делением на 16i и сложением.
    Например:
    uint32_t put_nibble(uint32_t v, int nibble_index, uint32_t nibble)
    {
        uint32_t p = 1;
        uint32_t r;
        int i;
        for (i = 0; i < nibble_index; ++i)
            p *= 16;
        r = (v % p) + (nibble * p);
        if (nibble_index < 7)
            r += (v / (p * 16)) * p * 16;
        return r;
    }
    Ответ написан
  • 0xD34F
    @0xD34F
    Умножение на два - это сдвиг на один бит влево. Умножение на четыре - сдвиг на два бита. Ну и т.д. То есть, если числа полбайтовые, то умножать надо на шестнадцать. Первое число на шестнадцать в нулевой степени, второе на шестнадцать в первой степени, третье на шестнадцать во второй степени и т.д. Результаты умножения складываете, вот и всё.
    Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы