Здравствуйте, я новичок в arduino и, возможно, это глупый вопрос, но я пытаюсь преобразовать long
числа в byte
.
Мой код:
float f_longitud = 179.1234567;
byte payload[4];
long longitud= f_longitud * 10000000;
SerialUSB.println(longitud);
payload[0] = (byte) ((longitud & 0xFF000000) >> 24 );
payload[1] = (byte) ((longitud & 0x00FF0000) >> 16 );
payload[2] = (byte) ((longitud & 0x0000FF00) >> 8 );
payload[3] = (byte) ((longitud & 0X000000FF));
SerialUSB.println(payload[0]);
Проблема в том, что первый println
теоретически должен показывать 1791234567
, потому что я просто умножаю 179.1234567 x 10000000
, но он показывает 1791234560
. Почему этот 0 появляется? Где 7?
Вторая проблема заключается в том, что payload[0]
должен быть 6A
hex, но мой println
показывает 106
. Почему не конвертирует это правильно? Эта проблема возникает из-за предыдущей ошибки?
Ниже я показываю схему того, что я делаю. Это из этой ссылки .
Большое спасибо!