找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1576|回复: 0
打印 上一主题 下一主题

PHP中实现中文字符进制转换原理分析

[复制链接]

2500

主题

2513

帖子

7520

积分

论坛元老

Rank: 8Rank: 8

积分
7520
跳转到指定楼层
楼主
发表于 2018-2-14 08:31:54 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

            一,中文字符转十进制原理分析
GBK编码中一个汉字由二个字符组成,获取汉字字符串的方法如下
[U]复制代码[/U] 代码如下:
$string = "不要迷恋哥";
$length = strlen($string);
for($i=0;$i127){
$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()函数把各个中文字符转化为十六进制
实例源代码
[U]复制代码[/U] 代码如下:
$string = "不要迷恋哥";
$length = strlen($string);
echo $string;
$result = array();
//十进制
for($i=0;$i127){
$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开发工具获取的十六进制。
三,中文字符转二进制和八进制原理分析
实现中文字符转二进制和八进制与上面的十六进制转换原理一样,只是转换的函数不同,结合上面的实例代码,实现如下
中文字符转二进制,方法如下
[U]复制代码[/U] 代码如下:
$strings = array();
foreach($result as $v){
$dec = explode(" ",$v);
$strings[] = decbin($dec[0])." ".decbin($dec[1]);
}
var_dump($strings);

结果如下:

中文字符转八进制,方法如下
[U]复制代码[/U] 代码如下:
$strings = array();
foreach($result as $v){
$dec = explode(" ",$v);
$strings[] = decoct($dec[0])." ".decoct($dec[1]);
}

结果如下:

了解PHP实现中文字符进制转换原理,再通过PHP内置函数urldecode()就可以把十六进制的字符串通过组合转换为正常的中文汉字,请关注下一期中文字符编码研究系列之urldecode()与urlencode()函数字符编码原理。
            
            
您可能感兴趣的文章:
  • 用PHP实现将GB编码转换为UTF8
  • php utf-8转unicode的函数
  • PHP UTF8编码内的繁简转换类
  • PHP通过iconv将字符串从GBK转换为UTF8字符集
  • PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明
  • 支持生僻字且自动识别utf-8编码的php汉字转拼音类
  • PHP如何实现Unicode和Utf-8编码相互转换
  • PHP二进制与字符串之间的相互转换教程
  • 用PHP将Unicode 转化为UTF-8的实现方法(推荐)
  • PHP实现十进制、二进制、八进制和十六进制转换相关函数用法分析
  • PHP实现UTF8二进制及明文字符串的转化功能示例
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端