Nice article. Very informative.
But at the final function where 128 is subtracted from the result of ParseName, before being multiplied by 16777216 (2^24), could potentially yield negative results, if the first final octet is not above 128.
For example: 127.0.0.1 would result in -16777215.