Yana Nugraha Yana Nugraha - 3 years ago 230
C# Question

Converting little endian to int

First of all, I think this question is not C# independent. But can also be used in other languages like C.




I'm now trying to parse a file format which stores integers in 4 bytes little-endian format.
TBH, I don't know how the little-endian format nor big-endian format works.

But I need to convert them into an usable int variable.

For example,
02 00 00 00 = 2

So far, I have this code to convert the first 2 bytes: (I used FileStream.Read to store the raw datas into a buffer variable)

int num = ((buffer[5] << 8) + buffer[4]);


But it will only convert the first two bytes. (02 00 in the example, not 02 00 00 00)

Any kind of help would be appreciated :)

Answer Source
int GetBigEndianIntegerFromByteArray(byte[] data, int startIndex) {
    return (data[startIndex] << 24)
         | (data[startIndex + 1] << 16)
         | (data[startIndex + 2] << 8)
         | data[startIndex + 3];
}

int GetLittleEndianIntegerFromByteArray(byte[] data, int startIndex) {
    return (data[startIndex + 3] << 24)
         | (data[startIndex + 2] << 16)
         | (data[startIndex + 1] << 8)
         | data[startIndex];
}
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download