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

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

Есть 4 байта места. Есть несколько чисел полбайтовых. Как полбайтовые числа упаковать в 4 байтвое число, при помощи арифметических действий?
  • Вопрос задан
  • 69 просмотров
Решения вопроса 2
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Как полбайтовые числа упаковать в 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
Умножение на два - это сдвиг на один бит влево. Умножение на четыре - сдвиг на два бита. Ну и т.д. То есть, если числа полбайтовые, то умножать надо на шестнадцать. Первое число на шестнадцать в нулевой степени, второе на шестнадцать в первой степени, третье на шестнадцать во второй степени и т.д. Результаты умножения складываете, вот и всё.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы