我有一些代码,旨在将C(Arduino)8位字节数组转换为16位int数组,但似乎只能部分工作。我不确定我做错了什么。
字节数组按小端字节顺序排列。如何将其转换为int(每个条目两个字节)数组?
通俗地说,我想合并每两个字节。
目前,它输出输入BYTE ARRAY:
以下是我目前拥有的代码:
我根据Stack Overflow问题将C数组中的字节转换为长整型的解决方案编写了此函数。
字节数组按小端字节顺序排列。如何将其转换为int(每个条目两个字节)数组?
通俗地说,我想合并每两个字节。
目前,它输出输入BYTE ARRAY:
{0x10, 0x00, 0x00, 0x00, 0x30, 0x00}
。 输出INT ARRAY是:{1,0,0}
。输出应该是一个INT ARRAY:{1,0,3}
。以下是我目前拥有的代码:
我根据Stack Overflow问题将C数组中的字节转换为长整型的解决方案编写了此函数。
我还有一个基于相同代码的解决方案,可将字节数组转换为长整型数组(32位)http://pastebin.com/TQzyTU2j
,它可以很好地工作。
/**
* Convert the retrieved bytes into a set of 16 bit ints
**/
int * byteA2IntA(byte * byte_slice, int sizeOfB, int * ret_array){
//Variable that stores the addressed int to be stored in SRAM
int currentInt;
int sizeOfI = sizeOfB / 2;
if(sizeOfB % 2 != 0) ++sizeOfI;
for(int i = 0; i < sizeOfB; i+=2){
currentInt = 0;
if(byte_slice[i]=='\0') {
break;
}
if(i + 1 < sizeOfB)
currentInt = (currentInt << 8) + byte_slice[i+1];
currentInt = (currentInt << 8) + byte_slice[i+0];
*ret_array = currentInt;
ret_array++;
}
//Pointer to the return array in the parent scope.
return ret_array;
}