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 相关文章推荐
JAVA/JSP学习系列之六
Oct 09 PHP
用 PHP5 轻松解析 XML
Dec 04 PHP
php模板中出现空行解决方法
Mar 08 PHP
php开启安全模式后禁用的函数集合
Jun 26 PHP
[原创]php获取数组中键值最大数组项的索引值
Mar 17 PHP
php目录拷贝实现方法
Jul 10 PHP
PHP反射机制原理与用法详解
Feb 15 PHP
详解laravel安装使用Passport(Api认证)
Jul 27 PHP
Yii2框架实现利用mpdf创建pdf文件功能示例
Feb 08 PHP
php文件包含的几种方式总结
Sep 19 PHP
php libevent 功能与使用方法详解
Mar 04 PHP
PHP语言对接抖音快手小红书视频/图片去水印API接口源码
Aug 11 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
关于Appserv无法打开localhost问题的解决方法
2009/10/16 PHP
php 表单提交大量数据发生丢失的解决方法
2014/03/03 PHP
讲解WordPress开发中一些常用的debug技巧
2015/12/18 PHP
CI框架中$this->load->library()用法分析
2016/05/18 PHP
Thinkphp整合阿里云OSS图片上传实例代码
2019/04/28 PHP
初探jquery——表单应用范例
2007/02/20 Javascript
javascript firefox不显示本地预览图片问题的解决方法
2008/11/12 Javascript
js函数在frame中的相互调用详解
2014/03/03 Javascript
利用js制作html table分页示例(js实现分页)
2014/04/25 Javascript
escape函数解决js中ajax传递中文出现乱码问题
2014/10/30 Javascript
Javascript基础教程之数据类型 (数值 Number)
2015/01/18 Javascript
JavaScript学习小结(7)之JS RegExp
2015/11/29 Javascript
javascript cookie基础应用之记录用户名的方法
2016/09/20 Javascript
JS实现鼠标滑过显示边框的菜单效果
2016/09/21 Javascript
Nodejs进阶之服务端字符编解码和乱码处理
2017/09/04 NodeJs
layui点击导航栏刷新tab页的示例代码
2018/08/14 Javascript
详解微信小程序支付流程与梳理
2019/07/16 Javascript
基于python的Tkinter实现一个简易计算器
2015/12/31 Python
关于Python中浮点数精度处理的技巧总结
2017/08/10 Python
Python中的groupby分组功能的实例代码
2018/07/11 Python
python判断数字是否是超级素数幂
2018/09/27 Python
python遍历小写英文字母的方法
2019/01/02 Python
详解Python中的内建函数,可迭代对象,迭代器
2019/04/29 Python
使用python获取(宜宾市地震信息)地震信息
2019/06/20 Python
Python API len函数操作过程解析
2020/03/05 Python
工程现场管理求职自荐信
2013/10/02 职场文书
工商企业管理应届生求职信
2013/11/03 职场文书
小学教育毕业生自荐信
2013/11/18 职场文书
技能比赛获奖感言
2014/02/14 职场文书
家长对老师的感言
2014/03/11 职场文书
质量在我心中演讲稿
2014/09/02 职场文书
基层党员四风问题自我剖析材料
2014/09/29 职场文书
学校感恩节活动策划方案
2014/10/06 职场文书
汤姆叔叔的小屋读书笔记
2015/06/30 职场文书
2015年教师节主持词
2015/07/03 职场文书
详解pytorch创建tensor函数
2022/03/22 Python