我有一些代码下面应该是将C(Arduino)8位字节数组转换为16位int数组,但它似乎只是部分工作。我不确定我做错了什么。转换字节数组为一个int数组在C
字节数组以小尾数字节顺序排列。如何将它转换为int(每个两个字节)数组?
通俗地说,我想合并每两个字节。
目前它正在输出一个输入BYTE阵列:。输出INT阵列是:{1,0,0}
。输出应该是INT ARRAY是:{1,0,3}
。
下面的代码是什么我目前有:
我写了基于a solution in Stack Overflow question Convert bytes in a C array as longs此功能。
我也有这个解决方案基于相同的代码,它适用于字节数组到长(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;
}
你为什么不只投int *指向输入数组的指针? – SomeWittyUsername
你对“部分”工作有什么意义?什么可行,什么不行? –
@icepack int可能是4个字节,他将2个字节转换为一个int。 –