浅析PHP的ASCII码转换类

本篇文章是对PHP的ASCII码转换类进行了详细的分析介绍,需要的朋友参考下
 
复制代码 代码如下:

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

时间: 2024-10-31 17:53:28

浅析PHP的ASCII码转换类的相关文章

浅析PHP的ASCII码转换类_php技巧

复制代码 代码如下: 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)      

ascii-如何把字母+数字的ASCII码转换成有效的身份证号码?代码如下

问题描述 如何把字母+数字的ASCII码转换成有效的身份证号码?代码如下 byte[] res = new byte[str.Length / 2]; for (int i = 0; i < str.Length /2; i++) { res[i] = Convert.ToByte(str.Substring(i * 2, 2), 16); continue; } string strNum =System.Text.Encoding.ASCII.GetString(res);//System.

C#字母转换成数字/数字转换成字母 - ASCII码转换

字母转换成数字 byte[] array = new byte[1];   //定义一组数组arrayarray = System.Text.Encoding.ASCII.GetBytes(string); //string转换的字母int asciicode = (short)(array[0]); ASCII码 = Convert.ToString(asciicode); //将转换一的ASCII码转换成string型   数字转换成字母byte[] array = new byte[1];

PHP ASCII码与字符串的相互转换的例子

<?php class ascii {     /**      * 将ascii码转为字符串      * @param type $str  要解码的字符串      * @param type $prefix  前缀,默认:&#      * @return type      */     function decode($str, $prefix="&#") {         $str = str_replace($prefix, "&quo

ASCII码

看一本书的时候想到的,感觉有点不务正业了,其实我感觉我需要一个全能助手,随时回答我的疑问   ASCII码是用来表示"字符"的.这里的字符包括了0-9九个数字,a-z的26个字母的大小写,各个标点符号,以及回车.空格.退格等一些特殊符号.ASCII 码使用指定的8位二进制数组合来表示,每个ASCII码是一个8位二进制数,一个ASCII码只能表示一个字符. 补码是用来表示带符号数字的.先将十进制数转成相应的二进制数,在最高位前加上0或1代表数字的正负,就产生了数字的原码,再按一定的规则转

php实现图片转换成ASCII码的方法

 具体如下: php图片转换成ASCII码,转换后可以直接通过字符串显示图片 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 <html> <head> <title>Ascii</title> <style> body{ line-height:0; font-size:1px; } </s

PHP详解ASCII码对照表与字符转换_php技巧

一,通用的ASCII码对照表 图解ASCII码对照表图,以字符A为例Dec表示十进制,如65Hx表示十六进制,如41Oct表示八进制,如101Char表示显示字符,如A ASCII码对照表图分为两个单元1,控制字符 0-31和1272,可显示字符 32-126(1)48-57为0到9十个阿拉伯数字:(2)65-90为26个大写英文字母:(3)97-122号为26个小写英文字母:(4)其它标点符号.运算符号等: 二,ASCII扩展码对照表   三,PHP字符转换函数说明 具体字符转换函数说明请参考

JS中字符问题(二进制/十进制/十六进制及ASCII码之间的转换)_javascript技巧

var a='11160'; alert(parseInt(a,2)); //将111做为2进制来转换,忽略60(不符合二进制),从左至右只将符合二进制数的进行转换 alert(parseInt(a,16)); //将所有的都进行转换 依照此方法,其实可以转换成任何进制 var a='1110'; alert(parseInt(a,10).toString(16)); //将A转换为10进制,然后再转换成16进制 同样也可以是其它进制 下面说下ASCII 码: function test(){

PHP中ASCII码对照表与字符转换详解

通用的ASCII码对照表 图解ASCII码对照表图,以字符A为例 Dec表示十进制,如65 Hx表示十六进制,如41 Oct表示八进制,如101 Char表示显示字符,如A ASCII码对照表图分为两个单元 1,控制字符 0-31和127 2,可显示字符 32-126 (1)48-57为0到9十个阿拉伯数字: (2)65-90为26个大写英文字母: (3)97-122号为26个小写英文字母: (4)其它标点符号.运算符号等: 二,ASCII扩展码对照表   三,PHP字符转换函数说明 具体字符转