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?

Exibições: 1140

Responder esta

Respostas a este tópico

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... 

https://web.fe.up.pt/~ee96100/projecto/Tabela%20ascii.htm

  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);
  }

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço