Ir para conteúdo
Fórum Script Brasil
  • 0

Converter array de int em string


steel_sp

Pergunta

Senhores, tenho uma variável chamada cpf[11] e declarada como inteiro. Preciso converter o valor contido nela em uma string. Por exemplo, o array {1,2,3,4,5} em uma string "12345".

Como posso fazer isso?

Quero fazer isso porque irei usar a variável cpf para fazer busca em arquivos, e vejo que se esta estiver em uma string facilitará meu trabalho.

Obrigado desde já.

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Veja o help da função sprintf(), que não vai pegar todos os 11 inteiros. Você terá de usar um loop. O ideal era que essa informação já estivesse nativamente em uma matriz de char. Isso se for C. Se for C++, use a classe String também logo de início. Ela faz tudo ficar muito mais fácil.

E note: sempre que tiver de manipular informação, só uso o tipo apropriado. Se é CPF, é char/string. Nunca teria de ser usado inteiro nesse caso. Sei que até facilita o cálculo do DV, mas atrapalha no resto. Ainda assim, inteiro não é o tipo apropriado. Aliás, da forma como falou, imagino que você até esteja armazenando como inteiro. Se for isso, é um grande desperdício.

Link para o comentário
Compartilhar em outros sites

  • 0

Você também poderia, ao invés de usar a sprintf, converter "você mesmo". Crie outra variável do tipo char, com 12 posições. (11 para o cpf, 1 para o NULL)

Depois percorra 11 vezes em um loop. Para 0-10, faça:

string[i] = cpf[i] + 0x30
Depois coloque o NULL na string.
string[11] = 0;

Acho que é 0x30 que é preciso somar para converter para ASCII. Seria bom consultar uma tabela.

Abraços.

Link para o comentário
Compartilhar em outros sites

  • 0

Você também poderia, ao invés de usar a sprintf, converter "você mesmo". Crie outra variável do tipo char, com 12 posições. (11 para o cpf, 1 para o NULL)

Depois percorra 11 vezes em um loop. Para 0-10, faça:

string[i] = cpf[i] + 0x30
Depois coloque o NULL na string.
string[11] = 0;

Acho que é 0x30 que é preciso somar para converter para ASCII. Seria bom consultar uma tabela.

Este método funciona se você estiver armazenando o CPF como descrito. Um número de 0 a 9 em cada posição do array. Se for um número maior que 9 em alguma posição, sprintf seria a melhor solução.

Abraços.

Link para o comentário
Compartilhar em outros sites

  • 0

O código é em C mesmo.

Na verdade o cpf foi declarado como char e convertido para inteiro para facilitar no cálculo do DV. Posteriormente vi que atrapalhou todo o resto.

Esse esquema do 0x30 eu desconhecia, mas realmente funcionou!

Por enquanto não estou tendo problemas com o cpf em int, mas quase certamente terei que convertê-lo para char.

Agradeço a ajuda!

Editado por steel_sp
Link para o comentário
Compartilhar em outros sites

  • 0

Lei de Murphy: se facilita de um lado, pode apostar que do outro lado complica. Mas esse impasse é simples de resolver. Se a natureza dos dados é char, mantenha como char. RG, CPG, CNPJ, PIS, etc. Todos os números de documentos que contém DV podem ser convertidos para o cálculo. Mesmo assim, continuarão sendo informações de texto. Devem sempre ser mantidos como strings comuns. No cálculo devem ser convertidos para o tipo mais apropriado.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...