hash() uses an hexadecimal representation([a-f0-9]) whereas crypt() seems to use [a-zA-Z0-9./] from what I see.
For the hexadecimal representation, each character holds 4(16 needs 4 binary digits) bits of information, and for the crypt one, each character holds 6(64 needs 6 binary digits).
We know that SHA-512 generates a 512 bit hash, so:
- hash(): 512 / 4 = 128 characters
- crypt(): 512 / 6 = 85,33 ~= 86 characters, which matches with the character length if we strip the crypt mode, rounds, and salt($6$rounds=5000$HGWYWN+gVBLsotI5$). In your example that's "sxqlewzU4pn4Z0/.5DlX6orE9Mw2W0Z7VJ6Qp8cCQdDqGvCJHqgiG6fYQjI2dSm78ErfXQ8QbMjq1JCVl2Hah0"
As an illustration, see what happens when we use 10, 16 or 36 characters to represent a number.
$decimalNumber = 123456789;
var_dump(base_convert($decimalNumber, 10, 16), base_convert($decimalNumber, 10, 36));