When opening a .uasset file in a hex editor, one can find a long list of strings.
These strings are placed one after the other.
It seems that it first lists the string length + nullbyte, then the string itself (+ nullbyte), followed by some 32-bit integer.
I believe that this value is a CRC, but I can’t seem to find the correct algorithm that is calculating them.
For example, the following from my hex editor:
0F 00 00 00 54 61 62 6C 65 5F 41 6C 6C
49 74 65 6D 73 00 62 7F 20 09
First, it shows the length (0x0f, or 15), then the string (Table_AllItems), then followed by 62 7F 20 09.
Using an online CRC calculator, doesn’t seem to find this value from the string.
It doesn’t give the correct value for the hex value with the nullbytes appended either.
The code that calculates the CRC seems to be at https://github.com/EpicGames/UnrealEngine/blob/4.26/Engine/Source/Runtime/Core/Private/Misc/Crc.cpp, where it uses the standard polynomial, or the IEEE table for slicing-by-8.
The documentation for string hashing mentions the HashString function, which calls StrCrc, so this is the reason that I assume that it’s CRC.
Is this in fact a calculation of CRC in the .uasset files, or is it a different calculation I should look at?