Eduardo Cesar Lenz 0 Posted January 21, 2019 Report Share Posted January 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? Quote Link to post Share on other sites
0 vangodp 0 Posted January 21, 2019 Report Share Posted January 21, 2019 sprintf? Quote Link to post Share on other sites
0 britivaldo 0 Posted January 27, 2019 Report Share Posted January 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')); Quote Link to post Share on other sites
Question
Eduardo Cesar Lenz 0
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 to post
Share on other sites
2 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.