Работа с двоичными данными

Тема в разделе "Arduino & Shields", создана пользователем Egorka, 16 мар 2016.

  1. Egorka

    Egorka Нуб

    Добрый день.
    Побитово (т.е. либо 0 либо 1) принимаю от датчика данные, длинна посылки 32 бита = 4 байта,
    Serial.print(digitalRead(buttonPin)); посылку в терминале отображает корректно.
    Внимание вопрос, как отобразить посылку в HEX виде, не в двоичном, а так же, в переменной какого типа рекомендуется хранить такие данные.

    Подскажите в какую сторону копать, или что прочитать для реализации данного функционала с наименьшей нагрузкой на проц?

    p.s. я знаю как преобразовывать числа между системами счисления с помощью математических операций, на мой взгляд это будет очень громоздко.
    p.p.s. arduino uno если это важно.
     
  2. Megakoteyka

    Megakoteyka Оракул Модератор

  3. CryNET

    CryNET Гик

    Код (C++):
    // print it out in many formats:
        Serial.print(x);       // print as an ASCII-encoded decimal - same as "DEC"
        Serial.print("\t");    // prints a tab

        Serial.print(x, DEC);  // print as an ASCII-encoded decimal
        Serial.print("\t");    // prints a tab

        Serial.print(x, HEX);  // print as an ASCII-encoded hexadecimal
        Serial.print("\t");    // prints a tab

        Serial.print(x, OCT);  // print as an ASCII-encoded octal
        Serial.print("\t");    // prints a tab

        Serial.println(x, BIN);  // print as an ASCII-encoded binary
        //                             then adds the carriage return with "println"
    https://www.arduino.cc/en/Serial/Print
     
  4. Egorka

    Egorka Нуб

    Спасибо, тогда следующий вопрос, как корректно в эту переменную занести данные?
    if (digitalRead(buttonPin)) {val=val*10+1} else {val=val*10} это в принципе операция над десятичными числами получается, и на вскидку работать не будет
    Ну или ткните носом, в теорию.
     
  5. Megakoteyka

    Megakoteyka Оракул Модератор

    unsigned long x = 0;
    ...
    x <<= 1;
    x += digitalRead(buttonPin);
     
  6. Egorka

    Egorka Нуб

    Всем ответившим спасибо. Вопрос решен.