Ir ao conteúdo
  • Cadastre-se

kleberaugus

Membros Plenos
  • Total de itens

    48
  • Registro em

  • Última visita

  • Qualificações

    0%

Reputação

14

Sobre kleberaugus

  • Data de Nascimento 25/06/1984 (36 anos)

Informações gerais

  • Cidade e Estado
    Barueri, SP
  1. Eu odeio a documentação, poderia ser mais explicativo.
  2. Obrigado, quando estiver em casa vou ver isso. adicionado 16 minutos depois t@arfneto Só agora entendi a lógica da coisa, o importante é ser int para gravar, mas porque eu me daria o trabalho de colocar mais zeros se de qualquer forma vai ser convertido para int? Pra mim isso seria trabalho inútil, mas eu entendi (só agora) o que você quis dizer adicionado 28 minutos depois Mas talvez esteja havendo uma divergencia de informações, esses bits estão em uma string, talvez você esteja falando de modificar um int diretamente.
  3. O in.read não aceita unsigned char.
  4. @arfneto Eu já conversei com você sobre isso, é que estou lendo uma stream e iostream( ou ifstream não lembro, não estou no pc agora) não aceita unsigned char, aí vem char de 9 bits, o nono bit sendo o sinal. adicionado 1 minuto depois Por mim eu gravaria com unsigned char, mas não aceita. adicionado 8 minutos depois A minha dúvida é: se eu leio 9 bits para cada inteiro que vem da stream, quando eu mando um inteiro pro buffer ser gravado esse inteiro é gravado com 9 bits, certo?
  5. Estou tentando converter um set bit para long para depois converte-lo em inteiro, mas nesse código: std::bitset<9> binario2(std::string(binario)); unsigned long value = binario2.to_ulong(); na expressão de baixo o "binario2" fica sublinhado de vermelho e escreve que a expressão deve possuir um tipo de classe, no início declarei #define <bitset>
  6. @arfneto Quero fazer algo original, ou se não for original, pelo menos alguma coisa que saiu da minha cabeça... O meu algoritmo pega sequencias de 0 e 1 e diminui um bit dele... por exemplo: 111 vira 11, 00 vira 0 e faço uma jogadinha pra diferenciar cada número, eu sei quais são os números e quais números devem ser acrescentados! A única situação que o algoritmo não funciona inicialmente é quando tem mais 0 e 1 isolados do que em conjunto, por exemplo: 01010101. Vamos ver que bicho vai dar! O único jeito de saber é fazendo!
  7. Valeu @arfneto, sua ajuda foi fundamental pro progresso do meu projeto pessoal (é a falta do que fazer com a vontade de fazer), você deve ter percebido que eu não sei nada, no máximo estudei lógica de programação (onde só aprendi sobre condicional, laço de repetição e função), há vários anos estou obcecado em construir um compactador (deve ser porque já gastei muito dinheiro com disco de backup rsrsrs) mesmo sem saber nada vou pegando uma informação aqui, outra ali e vou botando a mão na massa. Quanto ao algoritmo do meu compactador, já tentei de diversas formas, sempre achava que funcionaria mas sempre chegava em alguma situação que o inviabilizava, agora cheguei em uma nova solução para ele e espero não encontrar nenhum percalço, pelos testes iniciais parece que agora vai! Nas primeiras tentativas estava usando Java, só que como estou aprendendo C na facul resolvi ir por esse caminho... A maior dificuldade inicial você matou para mim, que era saber como escrever e ler um arquivo, e ainda deu dica de como otimizar o código, muito bom mesmo! Sem você não sei se seria possível... agora para implementar meu algoritmo ficou mais fácil, só manipular strings ou como você indicou, manipular os bits diretamente. Muito obrigado!
  8. @arfneto Calma, só estava sendo sarcástico, de certa forma o livro ensina bastante coisa, mas nada prático, viajei na parte de stream! E eu não disse que sei, só quis dizer que não sei! Li na biblioteca virtual que minha facul oferece. adicionado 15 minutos depois @arfneto Isso significa que eu não posso usar unsigned char?
  9. @arfneto Tratar os bits ao invés de fazer contas: interessante, vou pesquisar a respeito. Sim, mas agora o problema já foi resolvido... lembro de ter usado unsigned char e ter tido problemas para converter para ele... mas vou testar, é bem melhor mesmo. Testando aqui: in.read(buffer, bloco); quando coloco como unsigned char a parte de escrita e leitura diz que um argumento unsigned char não é compatível com parâmetro char. ->erro na palavra buffer.
  10. Fui ler sobre streams no livro do Deitel, ao acabar de ler você sabe como tudo funciona internamente, só não sabe escrever um código que funcione.
  11. @arfneto Estou fazendo o buffer pegar de um em um bit para poder converter kkkkkkk Aqui eu transformo os bytes de decimal para binário, guardando na string binário, depois eu concateno os zeros que faltam mas acho que essa parte não interessa por aqui. somaBinInt = buffer[0]; if (somaBinInt == 0) { binario = "000000000"; } if (somaBinInt > 0) { positivo = somaBinInt; while (positivo > 0) { binario = to_string(positivo % 2) + binario; positivo /= 2; }//fim do while }//fim do if else if (somaBinInt < 0) { negativo = somaBinInt; negativo = negativo * (-1); while (negativo > 0) { binario = to_string(negativo % 2) + binario; negativo /= 2; }//fim do while }//fim do else if Depois para desconverter (converter novamente para decimal) eu converto cada caractere da String binário em inteiro e faço os devidos cálculos para transformar binário em decimal: a1 = binario[0] - '0';//-'0' para converter caractere em inteiro a2 = binario[1] - '0'; a3 = binario[2] - '0'; a4 = binario[3] - '0'; a5 = binario[4] - '0'; a6 = binario[5] - '0'; a7 = binario[6] - '0'; a8 = binario[7] - '0'; a9 = binario[8] - '0'; binario.clear(); intermediario = a1 * 256 + a2 * 128 + a3 * 64 + a4 * 32 + a5 * 16 + a6 * 8 + a7 * 4 + a8 * 2 + a9; resultado = a2 * 128 + a3 * 64 + a4 * 32 + a5 * 16 + a6 * 8 + a7 * 4 + a8*2 + a9; if (intermediario > 128) { resultado = resultado * (-1); } buffer[0] = resultado; Parece simples, mas levei 4 dias pra fazer isso funcionar perfeitamente! É duro aprender pela internet, muita informação incompleta e mesmo os livros não ajudam muito! Se não fossem os fóruns!
  12. Seguinte, estou com uma dúvida que agora só os universitários para me ajudar: Quando leio uma stream de um arquivo, olho byte a byte qual byte está vindo, como ele é colocado em um buffer de char, o byte vem como um número em inteiro penso eu como um possível número da tabela ascii. A tabela ascci imaginei que iria até o número 127 justamente para caber os números de 0 a 127 em um byte, nessa leitura que eu fiz também vem números negativos que eu resolvo colocando 1 no dígito mais significativo, porém veio um número que ferrou todo meu programa: -128. Como eu representaria o número -128 em apenas 1byte? É que é assim: os bytes chegam via stream em inteiro, eu transformo eles em binário (em string) trato eles e volto a grava-los como inteiro, nesse primeiro momento não estou tratando os dados, apenas estou convertendo, desconvertendo e gravando o mesmo arquivo para ver se a lógica do conversor está correta. Estando tudo correto o arquivo original deveria ter sua réplica. Após vários testes, olhei os binários do arquivo original e comparei com o gerado: o único erro é no byte representado pelo número -128! Poderia simplesmente passar a representar todos números por 9 bits (para sinalizar o número 128), mas acho estranho, o computador não deveria representar seus bytes por 8 bits???
  13. @arfneto Acabei de conseguir o que queria aqui, não tenho nem palavras pra lhe agradecer! A parte mais difícil eu venci, que era a parte técnica... faltou eu olhar a documentação e testar, mas seu código me abriu a mente! Agora sim eu posso começar o trabalho, valeu!!!!!!!
  14. @arfneto Estava estudando seu código, cheguei à conclusão que a parte que grava os bytes é essa: out.write(buffer, in.gcount()); Aqui no caso ele grava o buffer da stream, mas eu conseguiria gravar bytes do meu próprio buffer (a informação que eu modifiquei)??
  15. @arfneto Ajudou muito sim, muito obrigado, era o que eu queria: um exemplo de leitura e gravação que funciona, na internet tem muita informação incompleta. Aí eu tentei modificar seu código para fazer o que eu queria: tratar os bytes e depois gravar, o que eu pretendo fazer: pegar cada byte do buffer (tipo buffer[0], buffer[1]... até chegar no último, transformar os bytes em Strings, modificar sua ordem conforme meu algoritmo, transformar de volta em char e finalmente gravar no arquivo. Problemas: 1) ao ler os bytes do buffer só vem 7 bits, gravo com 7 bits mesmo ou tenho que acrescentar o último bit (seria 0 ou 1)?-> não pude testar porque está dando algo errado com meu código. 2) Como eu converteria de string para char novamente, com 7 ou 8 bits? Falta pouco para meu programa decolar, mas esse pouco está travando tudo (estou emaranhado nessa parte técnica). O código que eu acrescentei: Vou tentar de outras formas, mas nesse código que eu fiz por algum motivo não está gerando a string! //Meu algoritmo if (contador == 1) { for (aux = 7; aux > 0; aux--) { if (buffer[1] % 2 == 0) { //Essa é a posição do buffer do byte a ser convertido em binario bin[aux] = 0; }//fim do if else { bin[aux] = 1; buffer[1] = buffer[1] / 2; //Essa é a posição do buffer do byte a ser convertido em binario }//fim do else }//fim do for inteiro = bin[7] + bin[6] * 2 + bin[5] * 4 + bin[4] * 8 + bin[3] * 16 + bin[2] * 32 + bin[1] * 64 + bin[0] * 128; //o binario é transformado em inteiro while (inteiro > 0) { binario = to_string(inteiro % 2) + binario; //O binario é transformado em string inteiro /= 2; }//fim do while printf_s("%s string", binario.c_str());//Binário na tela } //fim do primeiro if contador++; adicionado 46 minutos depois @arfneto Deu certo transformar os bits do buffer em string, agora já consigo trata-los! A única dificuldade agora é transformar a string novamente em char! para gravar, e se só ter 7 bits tem algum problema.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Aprenda a ler resistores e capacitores

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!