リトルエンディアンのバイト順のバイト配列があります。それを長い (4 バイト) 配列に変換するにはどうすればよいですか?
簡単に言えば、4バイトごとにマージしたいのです。
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;