Quote from this article:
In many industries, the first polynomial is in use to create CRC tables and then apply it for performance purposes. The default polynomial, defined by IEEE 802.3 is 0xA001 for 16 bit and 0×04C11DB7 for 32 bit. We’re in C#, thus we should use its inversed version which is 0×8408 for 16 bit and 0xEDB88320 for 32 bit. We’re going to use those polynomials also in our sample.
Why should we use the inverse version of int defined by hex in C#?
And how did the author of quoted article invert 04C11DB7 to 0xEDB88320?
Also I’ve looked into other crc32 C# and C implementations. In all of them C uses 04C11DB7, C# uses 0xEDB88320
Do avoid assuming that anything you read in codeproject.com article is accurate, it is not a peer-reviewed site and there tends to be a lot of nonsense there that cannot be easily fixed with the kind of tools available at SO.
It doesn’t have anything to do with the language, the bit order is a choice available when you implement CRC32, just like the polynomial is a choice. An example would be BZip2 which uses reverse bit order and GZip which does not. You can easily see that 0xedb88320 is the reverse of 0x04c11db7 when you write it out as bits and reverse their order:
More about it in this Wikipedia article section.