Estou com um código q recebe uma request com o parâmetro do Mac address via get, ao pegar o parâmetro mac ele me retorna uma string, ex "FF:FF:FF:FF:FF:FF" e eu preciso transformar em uint8_t para fazer a comunicação ESP-NOW. Como posso converter essa string para uint8_t?
Tags:
Bom dia HSC, (se não gosta que te chame pelas iniciais, avise),
uma string deste tamanho, (ex "FF:FF:FF:FF:FF:FF"), não pode ser convertida em uma variável tipo uint8_t ,
pois contém 6 bytes (48 bits), e uma variável do tipo uint8_t só pode conter 8 bits.
Vc não informou qual é a plataforma que está usando, mas pelo descritivo acredito que seja um ESP32.
Uma solução paliativa é transformar esta string em 6 outras strings e depois transforma-la em
6 variáveis do tipo uint8_t.
RV
Henry tem como explicar melhor? Com a tabela ASCII de caracteres vc consulta qual valor representa qual caractere! O numeral 3 por exemplo seria "lido" em uint8_t provavelmente como 53... 0=48... então de vc tiver um char "numérico 0...9" subtraindo 48 vc vai ter o numero equivalente ao caractere numeral... outro exemplo 1! 1=49(char) ... 49-48=1!.... vc vai precisar ficar de olho nos : que é código 58...
char str[] = "B4:21:8A:F0:3A:AD";
uint8_t MAC[6];
char* ptr;
// convertendo MAC Address contido em str para o array MAC
MAC[0] = strtol(str, &ptr, HEX );
for( uint8_t i = 1; i < 6; i++ ) {
MAC[i] = strtol(ptr+1, &ptr, HEX );
}
// testando o valor obtido
Serial.print(MAC[0], HEX);
for( uint8_t i = 1; i < 6; i++) {
Serial.print(':');
Serial.print( MAC[i], HEX);
}
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por