Как получить последний октет IP-адреса в 3 отдельных целых числа?

#arduino #integer #ip

#arduino #целое число #ip

Вопрос:

Мне нужно получить последний октет IP-адреса в 3 отдельных int s для управления MAX7219.

Я знаю, что октет — это uint8_t

Используя IPAddress ip = Wifi.localIP(); , скажем, мой ip [3] был 148, мне нужно:
int b1 = 1
int b2 = 4
int b3 = 8
, но скажем, ip [3] было всего 8, тогда b1 и b2 должны быть равны 0.

Комментарии:

1. Зачем вам нужно разделить октет на 3 отдельных целых числа? Что вы делаете с этими целыми числами?

Ответ №1:

Первое, что пришло на ум; вероятно, есть более элегантные способы сделать это, но это работает:

 b3 = ip[3] % 10;
b2 = ((ip[3] % 100) - b3) / 10;
b1 = (ip[3] - (10 * b2) - b3) / 100;
 

Непроверенный, но вы поняли идею.

Однако не уверен, зачем вам понадобились бы отдельные целые числа.

Ответ №2:

заключительная функция; обратите внимание, что no_green — это двоичный массив со светодиодными битами

 void showIP()
{
  IPAddress ip = WiFi.localIP();
  b3 = ip[3] % 10;
  b2 = ((ip[3] % 100) - b3) / 10;
  b1 = (ip[3] - (10 * b2) - b3) / 100;

  // write bits to MAX7219  
  lc.setRow( 0, 6, byte( no_green[ b1] )); // hr leds position
  lc.setRow( 0, 3, byte( no_green[ b2] )); // min leds position 
  lc.setRow( 0, 0, byte( no_green[ b3] )); // sec leds position
  delay(6000);
}