¿Cómo puedo reordenar los bytes de un entero?

Mi tarea es convertir un archivo de datos de Big Endian a Little Endian y viceversa usando C.He estado buscando en línea durante aproximadamente 3 horas ahora para ver otros ejemplos y leer mi libro de texto, sin embargo, estoy tan atascado en cómo incluso comenzar esto. función.

Hasta ahora tengo el orden de eventos correcto (1 a 4) pero dentro de miconvert_and_save función tengo que crear una matriz de caracteres usando →char buffer[4];?

¿Alguien puede ayudarme? incluso si me das pistas sobre qué buscar, te lo agradecería mucho.

Necesito escribir una función llamada:

void convert_and_save(struct record item, FILE * output_handle, int number);

dentro de esta función hago la siguiente serie de pasos:

Convierta el entero en una matriz de caracteres utilizando:

int integer_to_characters(int number, char * buffer)
{
   memcpy(buffer, &number, 4);
}

Invierta el orden de los caracteres en esa matriz.

Convierta la matriz de caracteres a un número entero usando:

int characters_to_integer(char * buffer)
{
   int result;
   memcpy(&result, buffer, 4);
   return result;
}

escriba el registro convertido en el archivo de salida usando:

void save_record(FILE * file_handle, struct record a)
{
   char output_buffer[size_of_record];
   integer_to_characters(a.age, &(output_buffer[0]));
   memcpy(&(output_buffer[4]), a.name, 12);
   integer_to_characters(a.department, &(output_buffer[16]));
   fwrite(output_buffer, sizeof(char), size_of_record, file_handle);
}