I was also coming back in to edit my comment and write that my x -> 0.0.0.x was technically wrong and the same for the others. If you stick to only single-byte values then what I wrote was correct but if the values span multiple bytes they fill in the missing 0s appropriately, as in:
It's not really about eliding zeros, though. It's kind of a cursed thing:
x -> x3.x2.x1.x0
x.y -> x.y2.y1.y0
x.y.z -> x. y.z1.z0
x.y.z.w -> x. y. z. w
Where x0 is the 8 least significant bits of x, x1 is the next 8 higher bits, and so on.
The "zeros" happen when the last number is smaller than 256 (or 65536, etc.), but it doesn't have to be. For example 10.258 is a valid way to write an IPv4 address, it's the same as 10.0.1.2.