use union to retrieve each byte, instead of shifting