1

我有一个小端字节顺序的字节数组。如何将其转换为长(四个字节)数组?

用外行的话来说,我想每四个字节合并一次。

4

1 回答 1

5
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];

我很快写了一个示例。不过,它没有经过测试。

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;
于 2012-07-02T14:33:35.440 回答