バイト値を得るためのユーティリティ
何に使うのかは知らないが(待て)、例えばC言語で
#include <stdio.h> int main(int argc, char* argv[]) { int byteValue = 'a'; printf("%d\n", byteValue); }
として得られる「97」という数値を、PHPでは得られないのだよなぁ、と思って作ってみた。
<?php /** * 文字からバイト値を得るためのユーティリティクラス。 */ class CharByteMap { private static $charByteMap = array(); /** * 指定した文字列の先頭1文字のバイト値を取得する。 * * @param $s string バイト値を取得したい文字列 * @return int 指定した文字列の長さが1以上の場合は * 先頭1文字のバイト値、それ以外の場合は-1 */ public static function getByte($s) { /* 初期化 */ self::initialize(); /* 先頭1文字のバイト値を返却 */ switch (strlen($s)) { case 0: return -1; case 1: return self::$charByteMap[$s]; default: return self::$charByteMap[substr($s, 0, 1)]; } } /** * 文字⇒バイト値のマップを生成する。 */ private static function initialize() { if (empty(self::$charByteMap)) { for ($i = 0; $i < 256; ++$i) { self::$charByteMap[sprintf("%c", $i)] = $i; } } } } ?>
使用法は以下のような感じ。
<?php $byteValue = CharByteMap::getByte("a"); printf("%d\n", $byteValue); ?>