¿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);
}