РЕШЕНО Помогите с фильтрованием строки в число.срочно!!!!

Тема в разделе "Arduino & Shields", создана пользователем Адель, 23 ноя 2020.

  1. Адель

    Адель Нерд

    Здравствуйте.У меня в ардуино приходят вот такие строки
    Код (C++):

    70 6E 30 3A 39 FF FF FF
    70 6E 30 3A 38 FF FF FF
    70 6E 30 3A 37 FF FF FF
    70 6E 30 3A 36 FF FF FF
    70 6E 30 3A 35 FF FF FF
    70 6E 30 3A 34 FF FF FF
    70 6E 30 3A 33 FF FF FF
    70 6E 30 3A 32 FF FF FF
    70 6E 30 3A 31 FF FF FF
    70 6E 30 3A 30 FF FF FF
    и мне надо чтобы из этих строк были только числа от 0 до 9.
    Желательно в int
     
  2. Asper Daffy

    Asper Daffy Иксперд

    Вручную можете это проделать? Распишите.
     
  3. Адель

    Адель Нерд

    Много памяти и скорости уйдет.
     
  4. Адель

    Адель Нерд

    Деже если и задавать вручную то только через switch, а switch со строками не работает.А if много скорости жрет а она мне очень нужна
     
    Последнее редактирование: 23 ноя 2020
  5. Адель

    Адель Нерд

    Код (C++):
    switch (val9) {
        case ("70 6E 30 3A 31 39 FF FF FF"): digits = 19; break;
        case ("70 6E 30 3A 31 38 FF FF FF": digits = 18; break;
                case ("70 6E 30 3A 31 37 FF FF FF": digits = 17; break;
                        case ("70 6E 30 3A 31 36 FF FF FF": digits = 16; break;
                                case ("70 6E 30 3A 31 35 FF FF FF": digits = 15; break;
                                        case ("70 6E 30 3A 31 34 FF FF FF": digits = 14; break;
                                                case ("70 6E 30 3A 31 33 FF FF FF": digits = 13; break;
                                                        case ("70 6E 30 3A 31 32 FF FF FF": digits = 12; break;
                                                              case ("70 6E 30 3A 31 31 FF FF FF": digits = 11; break;
                                                                    case ("70 6E 30 3A 31 30 FF FF FF": digits = 10; break;
                                                                          case ("70 6E 30 3A 39 FF FF FF": digits = 9; break;
                                                                                case ("70 6E 30 3A 38 FF FF FF": digits = 8; break;
                                                                                      case ("70 6E 30 3A 37 FF FF FF": digits = 7; break;
                                                                                            case ("70 6E 30 3A 36 FF FF FF": digits = 6; break;
                                                                                                  case ("70 6E 30 3A 35 FF FF FF": digits = 5; break;
                                                                                                        case ("70 6E 30 3A 34 FF FF FF": digits = 4; break;
                                                                                                              case ("70 6E 30 3A 33 FF FF FF": digits = 3; break;
                                                                                                                    case ("70 6E 30 3A 32 FF FF FF": digits = 2; break;
                                                                                                                          case ("70 6E 30 3A 31 FF FF FF": digits = 1; break;
                                                                                                                                case ("70 6E 30 3A 30 FF FF FF": digits = 0; break;


                                              }
    вот так не работает.
     
  6. b707

    b707 Гуру

    ну и идиотизм... простите...

    Адель, вы можете для начала расписать обычным русским языком, что в этой строке
    Код (C++):
    70 6E 30 3A 39 FF FF FF
    есть "число от 0 до 9", которое нужно отсюда извлечь?

    ЗЫ насчет скорости просто ржу в голос. Почему новичкам, которые не могут в программировании "А" и "Б" связать - обязательно нужно что-то делать с большой скоростью ? :)
    Начиная водить машину, вы инструктору, наверно, сразу ставите задачу "Завтра мне надо победить в Формуле1" ? :)
     
    Andrey12 нравится это.
  7. Адель

    Адель Нерд

    которые изменяются.
     
  8. b707

    b707 Гуру

    ну так и начинайте с того, что откиньте все лишнее. Вас интересует пятый байт? Значит для начала надо 4 байта пропустить. считать пятый, а остаток строки тоже не учитывать. Байт 0x38 справитесь в число перевести?
     
  9. Адель

    Адель Нерд

    Я не навичок.Просто со строками мало работал.
     
  10. b707

    b707 Гуру

    ага ага
     
  11. Адель

    Адель Нерд

    Да пятый байт.
     
  12. b707

    b707 Гуру

    ну так за чем же дело стало? Вы ж не новичок...
     
    Andrey12 нравится это.
  13. b707

    b707 Гуру

    "РЕШЕНО" - ну и славно.
    А сами не могли до этого додуматься?
     
    Andrey12 нравится это.