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

Для составления шестнадцатеричного числа из байтов в языке программирования C вам понадобится использовать функцию sprintf() или snprintf(), которые позволяют форматировать строку согласно заданному шаблону.

Прежде всего, полезно знать, что каждый байт состоит из 8 битов и может принимать значения от 0 до 255 в десятичной системе.

Для примера предположим, что у вас есть массив bytes, содержащий байты, и вы хотите составить шестнадцатеричное число из них. Вот как это можно сделать:

#include <stdio.h>

#define MAX_SIZE 100

int main() {
    unsigned char bytes[MAX_SIZE] = {255, 128, 0, 42}; // пример заполнения массива байтов

    int num_bytes = 4; // количество байтов в массиве

    char hex_num[MAX_SIZE * 2 + 1]; // массив для хранения шестнадцатеричного числа

    int i;
    int offset = 0;
    for (i = 0; i < num_bytes; i++) {
        offset += sprintf(hex_num + offset, "%02X", bytes[i]); // форматируем очередной байт в шестнадцатеричную строку и добавляем его к результату
    }

    printf("Шестнадцатеричное число: %sn", hex_num);

    return 0;
}

В данном примере мы используем цикл для обхода каждого байта в массиве bytes. Для преобразования каждого байта в шестнадцатеричную строку мы используем функцию sprintf() с форматирующим спецификатором %02X, где X указывает, что нужно преобразовать число в шестнадцатеричный формат (в верхнем регистре) и %02 указывает, что результат должен иметь два символа, даже если исходное число занимает только один символ. Затем мы добавляем полученную шестнадцатеричную строку к переменной hex_num при помощи указания смещения offset.

Вывод программы будет следующим:

Шестнадцатеричное число: FF80002A

Это значит, что четыре байта 255, 128, 0 и 42 были успешно преобразованы в шестнадцатеричное число FF80002A.