@UltimateOrb

Как беззнаковое число перевести в 4 байта?

Суть проблемы в том, что это нужно сделать без использования сдвигов и побитовых операций. Мне удалось быстро найти алгоритм для перевода числа в 2 байта.

word x=8800; // = 0x2260

byte a=x/256;
byte b=x%256;


Мне кажется здесь нужно как-то использовать значение 16 777 216 для старших байтов.
  • Вопрос задан
  • 680 просмотров
Решения вопроса 1
maaGames
@maaGames
Погроммирую программы
Вот потому институтское образование (программистское) и бесполезно, что заставляют использовать деление там, где надо использовать сдвиги и бинарные операции.

По теме мыслишь правильно:
младший байт = х%256
первый байт = (х/256)%256
второй байт = (х/(256*256))%256
старший байт = х/(256*256*256)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Язык то какой?
Для C/C++
long val = 0x12345678;
printf("long: %ld\n", val);
printf("short: %d %d\n", ((short *)(&val))[0], ((short *)(&val))[1]);
printf("char: %d %d %d %d\n", ((char *)(&val))[0], ((char *)(&val))[1], ((char *)(&val))[2], ((char *)(&val))[3]);

или через union
union {
    long l;
    short s[2];
    char c[4];
} val;
long val.l = 0x12345678;
printf("long: %ld\n", val.l);
printf("short: %d %d\n", val.s[0], val.s[1]);
printf("char: %d %d %d %d\n", val.c[0], val.c[1], val.c[2], val.c[3]);
Ответ написан
Комментировать
AlanDrakes
@AlanDrakes
Си:
val = 0x1234;
a = (val & 0xFF);
b = (val >> 8);
Опа!
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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