• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

PHP 中文字符进制转换

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

一,中文字符转十进制原理分析

GBK编码中一个汉字由二个字符组成,获取汉字字符串的方法如下

复制代码 代码如下:

    $string = "不要迷恋哥";
    $length = strlen($string);
    for($i=0;$i<$length;$i++){
            if(ord($string[$i])>127){
                $result[] = ord($string[$i]).' '.ord($string[++$i]);
            }
    }
    var_dump($result);

        
由于一个汉字为两个字符组成,通过ord()函数获取字符的ASCII值如果大于127时,就可以确定当前字符为一个汉字的前半部分,还需要获取汉字的后半部分。当然,这种判断的方法要结合具体的开发环境,如果存在ASCII值大于127的单个字符,这种方法判断显然就不正确。

PHP实现中文字符转十进制的原理就是通过for循环的方法获取一个汉字的二个字符,然后使用ord()函数把各字符转换为十进制。如上分别是:不 [178 187] 要 [210 170] 迷 [195 212] 恋 [193 181] 哥 [184 231]

二,中文字符转十六进制原理分析

使用UltraEdit开发工具可以直接查看中文字符的十六进制,如下图

如,查看“不要迷恋哥”这五个字的十六进制
    
从上面的图可以知道各个汉字对应该的十六进制字符分别是:不 B2BB 要 D2AA 迷 C3D4 恋 C1B5 哥 B8E7

PHP 实现中文字符转十六进制的原理就是首先使用ord()函数取出各个中文字符的十进制,具体可查看[PHP函数篇掌握ord()与chr()函数应用],然后使用dechex()函数把各个中文字符转化为十六进制

实例源代码
复制代码 代码如下:

    $string = "不要迷恋哥";
    $length = strlen($string);
    echo $string;
    $result = array();
    //十进制
    for($i=0;$i<$length;$i++){
            if(ord($string[$i])>127){
                $result[] = ord($string[$i]).' '.ord($string[++$i]);
            }
    }
    var_dump($result);
//十六进制
    $strings = array();
    foreach($result as $v){
        $dec = explode(" ",$v);
        $strings[] = dechex($dec[0])." ".dechex($dec[1]);
    }
    var_dump($strings);

结果如下图

    

通过上面的方法实现把中文字符转换为十六进制,输出结果可对比使用UltraEdit开发工具获取的十六进制。

三,中文字符转二进制和八进制原理分析

实现中文字符转二进制和八进制与上面的十六进制转换原理一样,只是转换的函数不同,结合上面的实例代码,实现如下

中文字符转二进制,方法如下
复制代码 代码如下:

    $strings = array();
    foreach($result as $v){
        $dec = explode(" ",$v);
        $strings[] = decbin($dec[0])." ".decbin($dec[1]);
    }
    var_dump($strings);

结果如下:
    
中文字符转八进制,方法如下
复制代码 代码如下:

    $strings = array();
    foreach($result as $v){
        $dec = explode(" ",$v);
        $strings[] = decoct($dec[0])." ".decoct($dec[1]);
    }

结果如下:
     
本文转自:
                http://www.ogeek.net/article/29066.htm

               


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
PHP循环whiledowhile循环发布时间:2022-07-10
下一篇:
PHP-FPM 讲解发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap