Есть ли способ преобразовать массив байтов в число в C ++? - PullRequest
2 голосов
/ 01 июня 2019

Я прочитал 4 байта в виде массива из файла с SD-карты на Arduino Mega. Теперь я хочу преобразовать этот массив в одно число, чтобы я мог работать с числом как целым числом (байты являются длиной следующего раздела File). Есть ли какие-либо функции для моей проблемы или я должен написать свою собственную?

Я считал файл в байтовый массив с помощью функции file.read () из SDFat:

byte array[4]; //creates the byte array
file.read(array,4); //reads 4 bytes from the file and stores it in the array

Надеюсь, вы понимаете мою проблему.

1 Ответ

1 голос
/ 01 июня 2019

Зависит от порядка сохраненных байтов.Если порядковый номер совпадает с порядковым номером вашей целевой системы (я думаю, что Atmegas имеют старший порядковый номер), вы можете просто сделать

int32_t number = *(int32_t*)array;

, чтобы получить 32-разрядное целое число.

Если порядковый номер не равенв соответствии с этим вы должны сдвинуть байты вокруг себя для небольшого закодированного числа:

int32_t number = uint32_t(array[3]) << 24 | uint32_t(array[2]) << 16 | uint32_t(array[1]) << 8 | uint32_t(array[0]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...