有没有一种方法可以将字节数组转换为C ++中的数字?

时间:2019-06-01 11:09:11

标签: c++ arduino

我已经从Arduino Mega的SD卡中的文件中读取了4个字节作为数组。现在,我想将此数组转换为一个数字,以便可以将该数字作为整数使用(字节是下一个File节的长度)。我的问题是否包含任何包含的功能,或者我必须编写自己的功能吗?

我使用SDFat中的file.read()函数将文件读入字节数组:

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

希望您能理解我的问题。

1 个答案:

答案 0 :(得分:1)

这取决于存储字节的字节顺序。 如果字节序与您的目标系统之一匹配(我相信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]);