我已经从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
希望您能理解我的问题。
答案 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]);