有没有办法将字节数组转换为C++中的数字



我已经从Arduino Mega上的SD卡中读取了4个字节作为数组。现在我想将这个数组转换为一个数字,以便我可以将数字作为整数处理(字节是下一个文件部分的长度(。我的问题是否有任何包含的功能,或者我必须编写自己的代码?

我使用 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

我希望你能理解我的问题。

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

最新更新