Eduardo Cesar Lenz Postado Janeiro 21, 2019 Denunciar Share Postado Janeiro 21, 2019 Olá colegas, Meu problema é o seguinte. Estou recebendo os dados através de uma comunicação USART ("microcontrolador"), e ele está chegando em forma de string. Por exemplo: Buffer[] = {'1','2','3'}; Gostaria de armazenar estes dados em uma única variável, da forma: unsigned char var = 123; tentei fazer desta forma: var = 100*(Buffer[0]) + 10*(Buffer[1]) + (Buffer[2]); Porem não obtive êxito, ele me retornava uns valores estranhos. Alguém tem alguma ideia de como fazer? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 vangodp Postado Janeiro 21, 2019 Denunciar Share Postado Janeiro 21, 2019 sprintf? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 britivaldo Postado Janeiro 27, 2019 Denunciar Share Postado Janeiro 27, 2019 Sim porque o inteiro 1 e o caractere '1' possuem magnitudes diferentes, porém a sua lógica pode vir a ser corrigida; para corrigir basta fazer a conversão do tipo caractere da tabela para inteiro. Buffer[] = {'1','2','3'}; /* Declaração */ unsigned char var_uc= 0; /* Declaração */ unsigned char buffer_string[]= "123"; /* Conversão */ var_uc= 100 * ((buffer_string[ 0 ] - '0') + 10 * (buffer_string[ 1 ] - '0') + (buffer_string[ 2 ] - '0')); Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Eduardo Cesar Lenz
Olá colegas,
Meu problema é o seguinte. Estou recebendo os dados através de uma comunicação USART ("microcontrolador"), e ele está chegando em forma de string.
Por exemplo: Buffer[] = {'1','2','3'};
Gostaria de armazenar estes dados em uma única variável, da forma:
unsigned char var = 123;
tentei fazer desta forma: var = 100*(Buffer[0]) + 10*(Buffer[1]) + (Buffer[2]);
Porem não obtive êxito, ele me retornava uns valores estranhos.
Alguém tem alguma ideia de como fazer?
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
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.