Перевод чисел из шестнадцатеричной системы в десятичную и наоборот

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

  1. issaom

    issaom Гуру

    Вопрос к гуру языка. Как в среде Arduino IDE наиболее оптимально реализовать следующие функции?
    Код (C++):
    byte i=254; //0xFE
    char j;
    char k;

    //что-то нужно написать ?
    //чтобы j='F'; k='E';

    //---- наоборот

    char j='F';
    char k='E';

    //что-то нужно написать ?
    //чтобы i=254;
    Разумеется имеется в виду наличие в языке каких-нибудь специальных операторов упрощающих задачу - или нужно брать классический алгоритм преобразования чисел из одной системы в другую и пилить с нуля?
     
  2. b707

    b707 Гуру

    А можно поинтересоваться - зачем? А то только вчера обьяснял одному новичку. что 0x0F и 15 - это одно и то же и конвертировать 15 в 0x0F. чтобы подставить в функцию - бессмысленно.
     
  3. rkit

    rkit Гуру

    itoa, strtol
     
  4. issaom

    issaom Гуру

    Можно, сетевой протокол хочу на ASCII стандарте реализовать - передавать один байт информации в виде 2-х символов.
     
  5. b707

    b707 Гуру

    из int в hex в виде строки:
    Код (C++):
    int i;
    char buffer [32];
     
    itoa (i,buffer,16);
     
    issaom нравится это.
  6. b707

    b707 Гуру

  7. brokly

    brokly Гик

    Нельзя преобразовать число из одной системы в другую, можно только представить число в различных системах счисления. Например число 15, в десятичной системе выглядит как "15", в шестнадцатиричной как "F", в двоичной как "1111", в троичной как "120", в четверичной - "33" и т.д. Все эти значки в кавычках равны. Как пример есть написание чисел латиницей, а есть кириллицей, вот и десятичная, двоичная, шестнадцатиричная - это такое же представление.
    Правда есть один существенный момент, вычисления в этих системах ведутся по разному, при этом тождественные операции дают тождественный результат.
    В случае программера на си, когда мы пишем программу, нам проще мыслить десятичными понятиями, процессор же считает в шестнадцатиричной системе, а операции на шине проходят в двоичной. В терминал же мы можем выводить данные в любой системе, в какой захотим.

    Есть правда еще синтетические способы хранения данных, но это скорее извращение, например записав дату 10/11/17, как число 101117, мы можем сохранить его в long, но именно только что бы потом вывести на какой нибудь индикатор или экран, без каких либо заморочек. Вести счет с такой синтетикой у нас не получится :)
     
    Tomasina и arkadyf нравится это.
  8. issaom

    issaom Гуру

    ну.... смотря что этот программер пишет. Если какой-нибудь "ногодрыг" или работа с SPI вот нефига не удобнее мыслить десятичными понятиями..... а проанализировав свою задачу понял что представление чисел в 16 системе наиболее удобно )))
     
  9. brokly

    brokly Гик

    Ну как сказать с SPI нужно иногда время засекать, там байтики считать и т.д.