ホームページ  >  記事  >  バックエンド開発  >  PHPのASCIIコードと基数変換関数のサンプルコードを詳しく解説

PHPのASCIIコードと基数変換関数のサンプルコードを詳しく解説

伊谢尔伦
伊谢尔伦オリジナル
2017-07-17 11:37:442059ブラウズ

ASCIIコード比較表は2つのユニットに分かれています
1、制御文字0〜31と127
2、表示可能文字32〜126
(1) 48〜57は0〜9の10個のアラビア数字です
(2) 65〜 90 は 26 個の大文字の英字です。
(3) 97 ~ 122 は 26 個の小文字の英字です。
(4) その他の句読点、演算子数字などです。

10 進数、 65

などのHxは16進数を表します、たとえば41
Octは101などの8進数を表します
CharはAなどの表示文字を表します

PHPの文字変換関数の説明

具体的な文字変換関数の説明については、[

PHP関数

10進数、2進数、8進数、16進数変換の詳しい説明関数説明】10進数から2進数へのdecbin()関数10進数から8進数へのdecoct()関数10進数から16進数へのdechex()関数
バイナリ変換16進数
bin2hex
() 関数
2 進数から 10 進数へのbindec() 関数 8 進数から 10 進数への octdec() 関数 16 進数から 10 進数への hexdec() 関数
任意の base_convert() 関数

文字変換の例
例 1、文字を次のように変換する方法バイナリ、8 進数、または 16 進数の場合、ord() 関数を使用して最初に文字を ASCII 値に変換し、次に対応する基数変換関数を使用して次のように変換できます
a この文字は 2 進数/8 進数/16 進数に変換されます。以下に示すように

a字符的十进制:ord('a'); //输出97
二进制:decbin(ord('a')); //输出1100001
八进制:decoct(ord('a')); //输出141
十六进制:dechex(ord('a')); //输出61

そして、各バイナリシステムの出力結果を上記のASCIIコード比較表と比較することで確認できます。

例2、次のように、aのバイナリなど、バイナリを16進数または10進数に変換する方法


采用实例一的方法获取a字符的二进制
decbin(ord('a'));
然后把二进制转换为十六进制或十进制
十六进制:bin2hex(decbin(ord('a')));//输出31313030303031
二进制J:bindec(decbin(ord('a'))); //输出97

相互変換のサンプルコード:

class ascii
{
function decode($str)
{
    preg_match_all( "/(d{2,5})/", $str,$a);
    $a = $a[0];
    foreach ($a as $dec)
    {
        if ($dec < 128)
        {
            $utf .= chr($dec);
        }
        else if ($dec < 2048)
       {
            $utf .= chr(192 + (($dec - ($dec % 64)) / 64));
            $utf .= chr(128 + ($dec % 64));
        }
        else
        {
            $utf .= chr(224 + (($dec - ($dec % 4096)) / 4096));
            $utf .= chr(128 + ((($dec % 4096) - ($dec % 64)) / 64));
            $utf .= chr(128 + ($dec % 64));
        }
    }
    return $utf;
}
function encode($c)
{
    $len = strlen($c);
    $a = 0;
    while ($a < $len)
    {
        $ud = 0;
        if (ord($c{$a}) >=0 && ord($c{$a})< =127)
        {
            $ud = ord($c{$a});
            $a += 1;
        }
        else if (ord($c{$a}) >=192 && ord($c{$a})< =223)
        {
            $ud = (ord($c{$a})-192)*64 + (ord($c{$a+1})-128);
            $a += 2;
        }
        else if (ord($c{$a}) >=224 && ord($c{$a})< =239)
        {
            $ud = (ord($c{$a})-224)*4096 + (ord($c{$a+1})-128)*64 + (ord($c{$a+2})-128);
            $a += 3;
        }
        else if (ord($c{$a}) >=240 && ord($c{$a})< =247)
        {
            $ud = (ord($c{$a})-240)*262144 + (ord($c{$a+1})-128)*4096 + (ord($c{$a+2})-128)*64 + (ord($c{$a+3})-128);
            $a += 4;
        }
        else if (ord($c{$a}) >=248 && ord($c{$a})< =251)
        {
            $ud = (ord($c{$a})-248)*16777216 + (ord($c{$a+1})-128)*262144 + (ord($c{$a+2})-128)*4096 + (ord($c{$a+3})-128)*64 + (ord($c{$a+4})-128);
            $a += 5;
        }
        else if (ord($c{$a}) >=252 && ord($c{$a})< =253)
        {
            $ud = (ord($c{$a})-252)*1073741824 + (ord($c{$a+1})-128)*16777216 + (ord($c{$a+2})-128)*262144 + (ord($c{$a+3})-128)*4096 + (ord($c{$a+4})-128)*64 + (ord($c{$a+5})-128);
            $a += 6;
        }
        else if (ord($c{$a}) >=254 && ord($c{$a})< =255)
        { //error
            $ud = false;
        }
        $scill .= "&#$ud;";
    }
    return $scill;
}

以上がPHPのASCIIコードと基数変換関数のサンプルコードを詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。