Ir para conteúdo
Fórum Script Brasil

BioByte

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre BioByte

BioByte's Achievements

0

Reputação

  1. BioByte

    Criar um checksum

    Boa noite a todos. Preciso de ajuda para criar um checksum de codificação e decodificação para um vetor de char. O problema em si é o seguinte: O usuário digita as letras no teclado e armazenado em um vetor de char, a partir desse vetor de char é chamada uma função char *codifica(char *) e dentro dela é feito o checksum. O checksum do programa funciona assim: Tomando como exemplo que o usuário digitou 3 letras, cada letra tem 8 bits, na primeira sequencia de bytes o checksum passa um XOR nos sete primeitos bits e no oitavo ele é armazenado então o oitavo bit da sequencia original da primeira letra fica na posição nove e é a partir desse bit que foi deslocado da posição oito para nove que começa a contar uma nova sequência de bits da outra letra fazendo a segunda ter seus dois ultimos bits deslocados e na terceira ter os seus três ultimos bits deslocados. No final da função retorna o vetor codificado então ele entra em outra função char *decodifica(char *) para fazer a sua decodificação e passar o checksum para verificar possíveis erros. Originalmente o que eu tinha feito era tratar o vetor de char como um int e transformar cada letra em binario e armazenar em um outro vetor e então a função de codificação era chamada para fazer a codificação direto pelos bits. Mas discutindo com os meus colegas de turma um deles me avisou que o professor não aceitará manipular diretamente os bits, eles tem que ficar "mascarados" e fazer todas essas operaçoes de bits nos "bastidores". Já tenho um certo conhecimento de C e de suas funções como alocação dinâmica de memória,criação de funções, retorno de vetores em funções mas o grande problema meu é exatamente no miolo do programa. Não sei como manipular os bits dentro do char e deslocar os últimos e começar a contar a partir deles para fazer o novo ciclo do XOR sem ser pela manipulação direta dos bits por que não pode. Uso o Visual Studio 2013 e codeblocks. Agradeço a ajuda desde já.
×
×
  • Criar Novo...