Conversão dec -> hex ou String -> hex

Boa noite amigos "Arduinaltas".

Como um bom newbie (popularmente pronunciado nubie) que eu sou em arduino, estou tendo uma certa dificuldade em conversões.

Eu tenho um número em decimal do tipo long que preciso converter para hexadecimal.
Tenho também uma variável que contém um objeto do tipo String que também preciso converter para hexadecimal.

Como poderei fazer qualquer uma destas conversões? :blush:

Grande abraço.

Você pode usar a classe string para fazer as conversões facilmente. Creio que vai atender ao seu propósito.

Ex:
varHex = String(variavel, HEX);
Serial.println(varHex);

Segue um tutorial sobre a classe.

Complementando um pouco, evite usar variáveis tipo string. Pois o arduino tem limitação de memória para alocar espaço para variáveis desse tipo. Sempre que possível use array de char, tornando o código um pouco mais otimizado.

Abraços,

Blz ricardopaulob?

Cara, vamos ver se entendi...

Eu tenho a seguinte situação: Eu tenho um array (long) dos códigos (decimais) do teclado de 0 à 9 do controle remoto da minha TV.

unsigned long numeros[10] = {551487735, 551520375, 551504055, 551536695, 551495895, 551528535, 551512215, 551544855, 551491815, 551524455};

Então preciso enviá-los via IR para TV. Posso usar desta forma?

String numeroHex = String(numeros[1], HEX);
irsend.sendNEC(numeroHex , 32); //Envia o código do botão de numero 1.

Como posso otimizar este código?

Grande abraço.

o irsend nao funciona com strings... mas sim com numeros.

O facto de tu veres um numero representado como hexadecimal ou inteiro nao afecta o valor intrinseco do mesmo.

Isto e:

unsigned long var_int = 10; 
unsigned long var_hex = 0xA;

Estas variaveis sao exactamente iguais... la porque tu ves de forma diferente, nao quer dizer que o Arduino as veja da mesma forma que tu.

Dai que se sao esses numeros que pretendes enviar, apenas tens de fazer,

irsend.sendNEC(numeros[1] , 32);

bubulindo:
o irsend nao funciona com strings... mas sim com numeros.

O facto de tu veres um numero representado como hexadecimal ou inteiro nao afecta o valor intrinseco do mesmo.

Opa, blz?? Valeu aí, vou fazer os testes aqui. Obrigado pela dica.

Uma dúvida me surgiu. Não sei se se enquadraria neste post, mas vamos lá.

Eu preciso "desmembrar" um numero inteiro em algumas variáveis também inteiras.
Ex:
int testeNumero = 987;
//Desmembrado em:
int var1 = 9;
int var2 = 8;
int var3 = 7;

Ou

int testeNumero = 52;
// Desmembrado em:
int var1 = 0;
int var2 = 5;
int var3 = 2;

ou

int testeNumero = 7;
// Desmembrado em:
int var1 = 0;
int var2 = 0;
int var3 = 7;

Bom, acho que entenderam, né? hehehe Como posso fazer isto?

Grande abraço.

int temp = 987;
int var3 = temp%10;

temp = temp/10;

var2 = temp%10;

temp=temp/10;

var1 = temp%10;

Obviamente que pode ser feito de forma melhor... mas assim ficas com uma ideia do mecanismo.

bubulindo:

int temp = 987;

int var3 = temp%10;

temp = temp/10;

var2 = temp%10;

temp=temp/10;

var1 = temp%10;



Obviamente que pode ser feito de forma melhor... mas assim ficas com uma ideia do mecanismo.

Opa, funcionou perfeitamente aqui... Até melhor que eu precisava... Valeu!

Grande abraço!