Odd PHP hex string behaviour

It strikes me as slightly odd that: is_numeric("0xaa") === true (float)"0xaa" == 0 (float)("0xaa"+0) == 170 The same's true casting to int. Similarly annoyingly: »