Maison  >  Article  >  développement back-end  >  Explication détaillée du code ASCII et de l'exemple de code de la fonction de conversion de base en PHP

Explication détaillée du code ASCII et de l'exemple de code de la fonction de conversion de base en PHP

伊谢尔伦
伊谢尔伦original
2017-07-17 11:37:442025parcourir

Le tableau de comparaison des codes ASCII est divisé en deux unités
1, caractères de contrôle 0-31 et 127
2, caractères affichables 32-126
(1) 48~57 sont 0 à 9 dix chiffres arabes ;
(2) 65 à 90 sont 26 lettres anglaises majuscules
(3) 97 à 122 sont 26 lettres anglaises minuscules
(4) Autres signes de ponctuation, Opérateurs signe ; etc.;

en prenant le caractère A comme exemple
Dec représente un décimal, tel que 65
Hx représente un hexadécimal, tel que 41
Oct représente un octal, tel que 101
Char représente afficher les caractères, tels que A

Description de la fonction de conversion de caractères PHP

Pour une description spécifique de la fonction de conversion de caractères, veuillez vous référer à [Fonction PHP pour plus de détails explication Décimal, binaire, octal et hexadécimalConversion décimaleDescription de la fonction]
Fonction décimal en binaire decbin()
Fonction décimal en octal decoct()
Fonction décimal en hexadécimal dechex ()
binaire en hexadécimalbin2hex() fonction
binaire en décimal en décimal fonction bindec()
octal en décimal octdec() fonction
hex Système en décimal hexdec() fonction
Fonction arbitraire base_convert()

Exemple de conversion de caractères
Exemple 1, comment convertir un caractère en binaire, octal ou hexadécimal, vous pouvez utiliser La fonction ord() convertit d'abord les caractères en valeurs ASCII, puis utilise la fonction de conversion de base correspondante pour convertir, comme suit
a Ce caractère est converti en sa forme binaire/octale/hexadécimale, comme suit

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

Ensuite, vous pouvez vérifier les résultats de sortie de chaque numéro de base par rapport au tableau de comparaison des codes ASCII ci-dessus.

Exemple 2, comment convertir un binaire en hexadécimal ou décimal, tel que le binaire de a, comme suit

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

Un exemple de code pour une conversion mutuelle :

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;
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn