PHP 中关于ord($str)>0x80的详细说明


Posted in PHP onSeptember 23, 2012

GBK简体字符集的编码是同时用1个字节和2个字节来表示的。当高位是0x00~0x7f时,为一个字节,高位为0x80以上时用2个字节表示"

注:括号里面都是2进制

当你发现一个字节的内容大于0x7f,那它肯定是个(跟另外一个字节拼凑成一个)汉字,如何判断肯定大于0x7f呢?
0x7f(1111111)后面一个数就是0x80(10000000),所以想要大于0x7f,这个字节的最高位都肯定是1,我们只需要判断这个最高位是否为1就行了。

判断方法:

位与(相同的位都是1的才为1,否则为0):
如:要判断一个数的第三位是否是1,只要跟4(100)位与,判断一个数的第2位是否为1就跟2(10)位与.
同理判断第八位是否为1只要跟(10000000)也就是0x80位与了.

这里为什么不用>0x7f,php可能还行,但在其他强类型语言里面,1个字节的最高位用来标示负数,一个负数肯定不可能大于0x7f(最大的整数)

再举个例子:
a的assic码是97(1100001)
A的assic码是65(1000001)

b的assic码是98(1100010)
b的assic码是66(1000010)

发现一个规律:一个a-z的字母,只要是小写字母,第六位肯定是1,我们可以用这个来判断大小写:
这时候只要跟用以个字母跟0x20(100000)来位与判断:

if(ord($a)&0x20){ 
//大写 
}

如何把所有字母改成大写?第六位的1改成0就行了:
$a='a'; 
$a = chr(ord($a)&(~0x20)); 
echo $a;
PHP 相关文章推荐
基于pear auth实现登录验证
Feb 26 PHP
PHP获取文件后缀名的三个函数
Oct 15 PHP
PHP递归算法的详细示例分析
Feb 19 PHP
PHP输出XML到页面的3种方法详解
Jun 06 PHP
Yii使用CLinkPager分页实例详解
Jul 23 PHP
smarty内置函数foreach用法实例
Jan 22 PHP
php实现QQ空间获取当前用户的用户名并生成图片
Jul 25 PHP
PHP操作MySQL的mysql_fetch_* 函数的常见用法教程
Dec 25 PHP
Yii2中hasOne、hasMany及多对多关联查询的用法详解
Feb 15 PHP
php利用ffmpeg提取视频中音频与视频画面的方法详解
Jun 07 PHP
php-fpm服务启动脚本的方法
Apr 27 PHP
thinkPHP5.0框架事务处理操作简单示例
Sep 07 PHP
PHP+MySQL投票系统的设计和实现分享
Sep 23 #PHP
详解php的魔术方法__get()和__set()使用介绍
Sep 19 #PHP
php引用计数器进行垃圾收集机制介绍
Sep 19 #PHP
mysql,mysqli,PDO的各自不同介绍
Sep 19 #PHP
php数组相加 array(“a”)+array(“b”)结果还是array(“a”)
Sep 19 #PHP
PHP输入流php://input介绍
Sep 18 #PHP
PHP爆绝对路径方法收集整理
Sep 17 #PHP
You might like
PHP 面向对象程序设计(oop)学习笔记(三) - 单例模式和工厂模式
2014/06/12 PHP
centos下file_put_contents()无法写入文件的原因及解决方法
2017/04/01 PHP
PHP中$GLOBALS与global的区别详解
2019/03/21 PHP
PHP var关键字相关原理及使用实例解析
2020/07/11 PHP
在IE模态窗口中自由查看HTML源码的方法
2007/03/08 Javascript
创建公共调用 jQuery Ajax 带返回值
2012/08/01 Javascript
JavaScript实现仿新浪微博大厅和腾讯微博首页滚动特效源码
2015/09/15 Javascript
理解javascript中try...catch...finally
2015/12/25 Javascript
解决bootstrap导航栏navbar在IE8上存在缺陷的方法
2016/07/01 Javascript
Javascript仿京东放大镜的效果
2017/03/01 Javascript
如何使用JS在HTML中自定义字符串格式化
2017/07/20 Javascript
Vue.js特性Scoped Slots的浅析
2019/02/20 Javascript
vue+web端仿微信网页版聊天室功能
2019/04/30 Javascript
详解wepy开发小程序踩过的坑(小结)
2019/05/22 Javascript
微信小程序class封装http代码实例
2019/08/24 Javascript
layui之数据表格--与后台交互获取数据的方法
2019/09/29 Javascript
Python获取网页上图片下载地址的方法
2015/03/11 Python
python关闭windows进程的方法
2015/04/18 Python
Python实现GUI学生信息管理系统
2020/04/05 Python
如何实现删除numpy.array中的行或列
2018/05/08 Python
python 定义给定初值或长度的list方法
2018/06/23 Python
用pandas中的DataFrame时选取行或列的方法
2018/07/11 Python
踩坑:pytorch中eval模式下结果远差于train模式介绍
2020/06/23 Python
python将数据插入数据库的代码分享
2020/08/16 Python
移动端HTML5 input常见问题(小结)
2020/09/28 HTML / CSS
荷兰最大的儿童服装店:The Kids Republic
2019/04/13 全球购物
波兰家居和花园家具专家:4Home
2019/05/26 全球购物
什么是JNDI的上下文?如何初始化JNDI上下文
2012/03/10 面试题
汉语专业应届生求职信
2013/10/01 职场文书
模具专业毕业生自荐书范文
2014/02/19 职场文书
金秋助学感谢信
2015/01/21 职场文书
2016党员三严三实心得体会
2016/01/15 职场文书
css背景和边框标签实例详解
2021/05/21 HTML / CSS
vue-cli4.5.x快速搭建项目
2021/05/30 Vue.js
Python 发送SMTP邮件的简单教程
2021/06/24 Python
适合后台管理系统开发的12个前端框架(小结)
2021/06/29 Javascript