# API と ABI のバージョニング

`PY_VERSION_HEX` は、Python のバージョン番号を単一の整数に符号化したものです。

例えば、`PY_VERSION_HEX` に `0x030401a2` が設定されていれば、その値を下記のように32ビットの値として扱うことで、バージョン情報を得ることができます:

> bytes | ビット (ビッグエンディアンオーダ) | 意味
> --- | --- | ---
> `1` | `1-8` | `PY_MAJOR_VERSION` (`3.4.1a2` 中の `3`)
> `2` | `9-16` | `PY_MINOR_VERSION` (`3.4.1a2` 中の `4`)
> `3` | `17-24` | `PY_MICRO_VERSION` (`3.4.1a2` 中の `1`)
> `4` | `25-28` | `PY_RELEASE_LEVEL` (アルファ版では `0xA`、ベータ版では `0xB`、リリース候補版では `0xC`、そして最終版は `0xF`)、この例ではアルファ版を意味しています。
> | `29-32` | `PY_RELEASE_SERIAL` (`3.4.1a2` 中の `2`、最終リリースでは 0)

従って、`3.4.1a2` は hexversionで `0x030401a2` です。

これらのマクロは Include/patchlevel.h で定義されています。