将 C 数组中的字节转换为 long [英] Convert bytes in a C array as longs
本文介绍了将 C 数组中的字节转换为 long的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个小端字节序的字节数组.如何将其转换为长(四字节)数组?
I have a byte array in little endian byte order. How do I convert it to a long (four bytes) array?
通俗地说,我想每四个字节合并一次.
In layman's terms, I want to merge every four bytes.
推荐答案
byte b[4]; // Contains bytes
int x= 0;
x= (x << 8) + b[3];
x= (x << 8) + b[2];
x= (x << 8) + b[1];
x= (x << 8) + b[0];
我很快写了一个样本.不过,它没有经过测试.
I quickly wrote a sample. It's not tested, though.
unsigned char b[35];
int sizeOfB = sizeof b / sizeof(unsigned char);
int sizeOfL = sizeOfB / 4;
if(sizeOfB % 4 != 0) ++sizeOfL;
int lcount=0;
long* l = new long[sizeOfL];
for(int i = 0; i < sizeOfB; i+=4){
long currentLong = 0;
if(i + 3 < sizeOfB)
currentLong = (currentLong << 8) + b[i+3];
if(i + 2 < sizeOfB)
currentLong = (currentLong << 8) + b[i+2];
if(i + 1 < sizeOfB)
currentLong = (currentLong << 8) + b[i+1];
currentLong = (currentLong << 8) + b[i+0];
l[lcount]=currentlong;
lcount++;
}
// Use l...
delete l;
这篇关于将 C 数组中的字节转换为 long的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文