Como posso reordenar os bytes de um número inteiro?
Minha tarefa é converter um arquivo de dados de big endian para little endian e vice-versa usando C. Estou procurando on-line há cerca de 3 horas outros exemplos e lendo meu livro de texto, mas estou tão empolgado em como começar isso. função.
Até agora, a ordem dos eventos está correta (1 a 4), mas dentro da minhaconvert_and_save
função eu tenho que criar uma matriz de caracteres usando →char buffer[4];
?
Alguém por favor pode me ajudar? mesmo se você me der pistas sobre o que procurar, eu agradeceria muito.
Eu preciso escrever uma função chamada:
void convert_and_save(struct record item, FILE * output_handle, int number);
dentro desta função, eu faço as seguintes séries de etapas:
Converta o número inteiro em uma matriz de caracteres usando:
int integer_to_characters(int number, char * buffer)
{
memcpy(buffer, &number, 4);
}
Inverta a ordem dos caracteres nessa matriz.
Converta a matriz de caracteres de volta em um número inteiro usando:
int characters_to_integer(char * buffer)
{
int result;
memcpy(&result, buffer, 4);
return result;
}
escreva o registro convertido no arquivo de saída 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);
}