Bom dia galera!

Gostaria se vocês tem uma rotina que converta números inteiros em ASCII .

Exemplo converter o numero 120 para 78(ASCII)

o numero 169 para A9(ASCII)

Dessa maneira até 255 (inteiro) e FF (ASCII).

Ele identifique o numero inteiro e converter e me trazer esse ASCII para manipulá-lo.

Obrigado!

Exibições: 3880

Responder esta

Respostas a este tópico

Você não queria falar em HEXA em vez de ASCII ?

Ok,

Existe uma maneira de guardar HEX em string?

Numa pesquisa rápida no Google, encontrei esse tópico mais não testei.

http://blog.refu.co/?p=804

também:

http://stackoverflow.com/questions/11070183/sprintf-how-to-print-he...

Ainda não obtive sucesso, mais alguém ?

Chefe acabei de testar.

String s;
int i;
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  i = 0;
}

void loop() {
  // put your main code here, to run repeatedly:
   char buffer[40];
   i++;
   sprintf(buffer, "valor int %d valor hexa %02x", i,i);
   Serial.println(buffer);
  delay(1000);
}

Agora chefe, especifique melhor para que você precisa. Se for para imprimir na Serial, você pode usar o próprio método print e println que já da suporte (segundo parâmetro com constante HEX).

Veja em

https://www.arduino.cc/en/Serial/Print

Printar eu já estou conseguindo , o que quero e ter o resultado em uma variável para conseguir manipular a mesma, vou ver seu.Lin" obrigado

char buffer(4);

sprintf(buffer,"%02x",valorinteiro);

// agora buffer tem o valor inteiro em hexadecimal

um exemplo para entender melhor o que estou querendo:

tenho essa tag : 77 49 FC D9    os números inteiros dessa sequência corresponde a 119 73 252 217.

Eu consegui guardar em uma string essa sequencia  119 73 252 217,  o que eu gostaria é, convertesse esses numeros para hex, e me guardasse 77 49 FC D9 em uma string ou char, mas que eu tenha a autonomia de ter essa sequencia de valor em uma variavel para enviar a um servidor por exemplo.

Então resumindo:

Eu tenho isso : 119 73 252 217.

Gostaria disso :77 49 FC D9 e que fosse guardado em isso , como exemplo, String tag = guarda valor 77 49 FC D9

amigo, desculpe mas não entendi por que vc está convertendo a tag de hexadecimal para números decimais, e depois está querendo retornar para hexa novamente?

está parecendo que vc quer uma solução para o problema que criou. Por que vc não usa tudo em hexa mesmo, sem fazer essas conversões para número decimal?

Boa noite Imhugo !

Não estou querendo voltar em hexa novamente não, eu só tenho numero decimal e gostaria que fosse hex.

eu consigo sim dar um println    (inteiro , hex);    

Mas gostaria guardar essa informação (o hexadeciaml ) em uma variável, para manipular.

perdão se estou confundindo vocês hehe

Segue exemplo.

Vê se te ajuda.

#include <stdio.h>
#include <string.h>
String texto = "119 73 252 217";

// Convert string para inteiro e depois para string como hexa
String parseHexa(String s){
  int v = s.toInt();
  char buffer[4];
  sprintf(buffer, "%02x",v);
  return buffer;
}

// Pega parte da string apartir de um delimitador
// Código original obtido em :http://forum.virtronics.com.au/viewtopic.php?f=20&t=28220
String splitString(String s, char parser, int index) {
  String rs = "\0";
  int parserIndex = index;
  int parserCnt = 0;
  int rFromIndex = 0, rToIndex = -1;
  
  while (index >= parserCnt) {
    rFromIndex = rToIndex + 1;
    rToIndex = s.indexOf(parser, rFromIndex);

    if (index == parserCnt) {
      if (rToIndex == 0 || rToIndex == -1) {
        return "\0";
      }
      return parseHexa(s.substring(rFromIndex, rToIndex));
    }
    else {
      parserCnt++;
    }

  }
  return parseHexa(rs);
}


void setup() {

  // Adicionei um espaço extra ao final para ler o último digito

  // você pode melhorar a função depois.
  texto += " ";
  // put your setup code here, to run once:
  char *buff;
 
 String a = splitString(texto,' ',0);
 String b = splitString(texto,' ',1);
 String c = splitString(texto,' ',2);
 String d = splitString(texto,' ',3);

 Serial.begin(9600);
 Serial.println(a);
 Serial.println(b);
 Serial.println(c);
 Serial.println(d);

 String novaString = a + " " + b + " "  +c + " " +d;
 Serial.println(novaString);

}

void loop() {
  // put your main code here, to run repeatedly:

}

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço