Bastax13
@Bastax13

Как составить шестнадцатеричное число из байтов?

Хочу составить число 0xAAEFCDAB из отдельных байтов. До 4 тетрады все идет хорошо, а вместе с ней почему-то добавляются лишние 4 байта.

#include <stdio.h>

int main(void) {
  unsigned long int a = 0;

  a = a | ((0xAB) << 0);
  printf("%lX\n", a);
  a = a | ((0xCD) << 8);
  printf("%lX\n", a);
  a = a | ((0xEF) << 16);
  printf("%lX\n", a);

  a = a | ((0xAA) << 24);
  printf("%lX\n", a);

  return 0;
}

61c20982d9809444289137.png
  • Вопрос задан
  • 86 просмотров
Пригласить эксперта
Ответы на вопрос 1
includedlibrary
@includedlibrary
0xAA имеет тип int (как и все константы: 0xab, 0xcd, 0xef), принимает при сдвиге отрицательное значение. Нужно явно указать тип 0xAA
#include <stdio.h>

int main(void) {
  unsigned long int a = 0;

  a = a | ((0xAB) << 0);
  printf("%lX\n", a);
  a = a | ((0xCD) << 8);
  printf("%lX\n", a);
  a = a | ((0xEF) << 16);
  printf("%lX\n", a);

  a = a | ((unsigned long)0xAA << 24);
  printf("%lX\n", a);

  return 0;
}
Ответ написан
Ваш ответ на вопрос

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

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