このブログの過去のエントリで書いたネタと非公開だったネタ、いくつかをまとめて一つの拡張モジュールにしてみました。
php_opendogs-0.1.0.tgz
Base32、UTF-8 対応の chr() & ord()、整数と平衡三進法の相互変換、dSFMT による疑似乱数を提供します。
インストール方法:
tar xfz php_opendogs-0.1.0.tgz cd php_opendogs-0.1.0 phpize ./configure --enable-opendogs make sudo make install
dSFMT のサポートを有効にするには、configure のオプションで --with-opendogs-dsfmt=/path/to/libdsfmt-install-dir
を指定する必要があります。
関数一覧:
- string od_base32_encode(string $data)
- 文字列を Base32 エンコードします。
- string od_base32_decode(string $data)
- Base32 エンコードされた文字列をデコードします。
- A-Z2-7 以外の文字があるとエラーを発し、false を返します。
- 空白文字、小文字のアルファベット、数字の 0,1 もエラーとなります。
- 文字列末尾の = は無視します。過不足があってもかまいません。
- string od_unichr(int $code)
- string od_unichr_array(array $codes)
- int od_uniord(string $str)
- array od_uniord_array(string $str)
- array od_balanced_ternary_int2array(int $num)
- 整数を平衡三進記法の各桁の trit を収めた配列に変換します。
- 扱える数値の範囲は ±1743392200 です。
- int od_balanced_ternary_array2int(array $trits)
- 平衡三進記法の各桁の trit を収めた配列を整数に変換します。
- 配列の全ての要素は -1, 0, 1 のいずれかでないといけません。
- 配列の要素数は 20 以下でないといけません。
- void od_dsfmt_init([int $seed])
- 疑似乱数生成器を初期化します。
- float od_dsfmt_rand(void)
- 浮動小数点数で 0 以上 1 未満の疑似乱数を生成します。
以下余談。
このモジュールの関数名は od_ で始まりますが、configure のオプションに --with-opendogs-alias
をつけると、接頭辞 od_ 無しでも呼び出せるようになります。また、--with-opendogs-alias=no_prefix
とすると接頭辞無しの名前でか定義されなくなります。
が、しかし、他のライブラリの関数と名前が衝突する可能性が高くなるので、このオプションはつけないほうが無難です。