Не могу понять как перевести байты в int

Тема в разделе "Arduino & Shields", создана пользователем ALeska811, 3 фев 2020.

  1. ALeska811

    ALeska811 Нерд

    Код (C++):
    int a=highByte(score);
    int b=lowByte(score);
    int c=a<<8|b;
     
    Вот так переводятся и склеиваются в 1 число
    (не знаю правильно ли)
    а далее как c перевести обратно в int
    Код (C++):
    #include <EEPROM.h>
    int score;
    int value;
    byte a;
    byte b;
    byte c;
    void setup() {
    pinMode(2,INPUT_PULLUP);
    pinMode(3,OUTPUT);
    pinMode(4,INPUT_PULLUP);
    Serial.begin(9600);
    }

    void loop() {
    int a=highByte(score);
    int b=lowByte(score);
    int c=a<<8|b;
    EEPROM.read(1)=         //а вот тут незнаю как перевести
    if(!digitalRead(4)==HIGH){score = 5000;EEPROM.write(1,c);}
    if(score == 5000){digitalWrite(3, HIGH);}
    }
    не понимаю какие переменные использовать чтобы байты в них записывать
     
  2. ALeska811

    ALeska811 Нерд

    помогите пожалуйста
     
  3. KindMan

    KindMan Гуру

    Вам же @b707 в соседней теме уже давал ссылку с примерами, как писать/читать в eeprom что то отличное от байт. Смотрели?
     
  4. Asper Daffy

    Asper Daffy Иксперд

    issaom нравится это.
  5. parovoZZ

    parovoZZ Гуру

    Читать учебник по языку Си - раздел приведение типов. Должно выглядеть так:
    Код (C++):
    byte a;
    int c;

    с = (int) a;
     
  6. b707

    b707 Гуру

    ALeska811
    вот это вот глупость:
    Код (C++):
    int a=highByte(score);
    int b=lowByte(score);
    int c=a<<8|b;
    EEPROM.write(1,c);}
    если идти сверху - во-первых а и b у вас байты, зачем вы их как int описали
    во-вторых. и это главное - "с" у вас типа int - вы с вами уже выяснили, что в ЕЕПРОМ его так записать не получится
     
  7. b707

    b707 Гуру

    судя по это фразе вы вообще ничего не поняли
    "перевод в одно число" и "перевод в инт" - это одно и то же.

    Для записи в ЕЕПРОМ вам надо освоить обратную операцию - как из инт или "из одного числа" сделать 2 байта