Python 3.6.5 Documentation > API and ABI Versioning
API and ABI Versioning **********************
"PY_VERSION_HEX" is the Python version number encoded in a single integer.
For example if the "PY_VERSION_HEX" is set to "0x030401a2", the underlying version information can be found by treating it as a 32 bit number in the following manner:
+---------+---------------------------+--------------------------------------------------+ | Bytes | Bits (big endian order) | Meaning | +=========+===========================+==================================================+ | "1" | "1-8" | "PY_MAJOR_VERSION" (the "3" in "3.4.1a2") | +---------+---------------------------+--------------------------------------------------+ | "2" | "9-16" | "PY_MINOR_VERSION" (the "4" in "3.4.1a2") | +---------+---------------------------+--------------------------------------------------+ | "3" | "17-24" | "PY_MICRO_VERSION" (the "1" in "3.4.1a2") | +---------+---------------------------+--------------------------------------------------+ | "4" | "25-28" | "PY_RELEASE_LEVEL" ("0xA" for alpha, "0xB" for | | | | beta, "0xC" for release candidate and "0xF" for | | | | final), in this case it is alpha. | +---------+---------------------------+--------------------------------------------------+ | | "29-32" | "PY_RELEASE_SERIAL" (the "2" in "3.4.1a2", zero | | | | for final releases) | +---------+---------------------------+--------------------------------------------------+
Thus "3.4.1a2" is hexversion "0x030401a2".
All the given macros are defined in Include/patchlevel.h.
|