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!
Tags:
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.
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
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:
}
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por