Конвертация строки в byte

Тема в разделе "Arduino & Shields", создана пользователем Oberon, 28 апр 2017.

  1. Oberon

    Oberon Нерд

    Что-то я не пойму как их конвертировать
    имеем 2 переменных
    byte a = 101; // буква е
    byte b = 53; //буква 5
    как их сложить чтоб получилось 229 (число е5 в шестнадцатиричной системе)?
    На самом деле надо сравнить массив из 16 символов (буквы в byte) с массивом из 8 элементов(byte в шестнадцатиричной системе)
     
  2. rkit

    rkit Гуру

    Буквы к шестнадцатеричной записи отношения не имеют, поэтому ваш подход бессмысленный.
    А массивы сравниваются функцией memcmp.
     
  3. Oberon

    Oberon Нерд

    Я надеялся, что понятно пояснил.. ну тогда к реальной задаче..
    по mqtt получаю строку "28e5e0e405000074", соответственно в
    void callback(char* topic, byte* payload, unsigned int length) {, а именно в
    byte* payload имеем 50,56,101,53 и так далее, как это сравнить с адресом датчика, который имеет
    40,229 и так далее ?
     
  4. Richard

    Richard Нерд

    в любом языке разные типы по разному обрабатываются. шестнадцатеричная система счисления обычно берется из какой-нибудь сторонней библиотеки, потому что обычно все пользуются десятеричными (спасибо, кэп). если очень припрет, сделай функцию-конвертер из какого нибудь Integer в string. byte тебе тут явно не нужен, судя по описанию проблемы.
     
  5. rkit

    rkit Гуру

    Аски-строку с шестнадцатеричным числом в просто число можно пребразовать функцией sscanf("%x",...)
     
    Oberon нравится это.