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 相关文章推荐
PHP的单引号和双引号 字符串效率
May 27 PHP
PHP 远程文件管理,可以给表格排序,遍历目录,时间排序
Aug 07 PHP
php simplexmlElement操作xml的命名空间实现代码
Jan 04 PHP
ThinkPHP多表联合查询的常用方法
Mar 24 PHP
PHP从FLV文件获取视频预览图的方法
Mar 12 PHP
PHP实现图片上传并压缩
Dec 22 PHP
PHP编写RESTful接口的方法
Feb 21 PHP
php的socket编程详解
Nov 20 PHP
php获取excel文件数据
Apr 21 PHP
PHP实现的简单操作SQLite数据库类与用法示例
Jun 19 PHP
PHP迭代器接口Iterator用法分析
Dec 28 PHP
PHP 的Opcache加速的使用方法
Dec 29 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
JAVA/JSP学习系列之六
2006/10/09 PHP
收藏的PHP常用函数 推荐收藏保存
2010/02/21 PHP
PHP的Json中文处理解决方案
2016/09/29 PHP
mac下多个php版本快速切换的方法
2016/10/09 PHP
thinkPHP框架实现生成条形码的方法示例
2018/06/06 PHP
PHP attributes()函数讲解
2019/02/03 PHP
让textarea自动调整大小的js代码
2011/04/12 Javascript
JavaScript中数组对象的那些自带方法介绍
2013/03/12 Javascript
用js判断输入是否为中文的函数
2014/03/10 Javascript
Linux下使用jq友好的打印JSON技巧分享
2014/11/18 Javascript
javascript实现全角半角检测的方法
2015/07/23 Javascript
JS学习之表格的排序简单实例
2016/05/16 Javascript
微信小程序 网络API Websocket详解
2016/11/09 Javascript
jQuery在header中设置请求信息的方法
2017/03/06 Javascript
Vue 2.0 服务端渲染入门介绍
2017/03/29 Javascript
老生常谈JavaScript面向对象基础与this指向问题
2017/10/16 Javascript
基于vue cli重构多页面脚手架过程详解
2018/01/23 Javascript
Vue.set()实现数据动态响应的方法
2018/02/07 Javascript
JS实现的文件拖拽上传功能示例
2018/05/21 Javascript
vue异步加载高德地图的实现
2018/06/19 Javascript
在vue2.0中引用element-ui组件库的方法
2018/06/21 Javascript
vue集成chart.js的实现方法
2019/08/20 Javascript
[01:07:34]DOTA2-DPC中国联赛定级赛 RNG vs Aster BO3第二场 1月9日
2021/03/11 DOTA
使用Python中PDB模块中的命令来调试Python代码的教程
2015/03/30 Python
在Python的Flask中使用WTForms表单框架的基础教程
2016/06/07 Python
python查看微信好友是否删除自己
2016/12/19 Python
Python系统监控模块psutil功能与经典用法分析
2018/05/24 Python
Python实现的简单计算器功能详解
2018/08/25 Python
python批量赋值操作实例
2018/10/22 Python
Python2.7:使用Pyhook模块监听鼠标键盘事件-获取坐标实例
2020/03/14 Python
澳大利亚玩具剧场:Toy Playhouse
2019/03/03 全球购物
纪念九一八爱国演讲稿600字
2014/09/14 职场文书
2014流动人口计划生育工作总结
2014/12/20 职场文书
复兴之路展览观后感
2015/06/02 职场文书
Django展示可视化图表的多种方式
2021/04/08 Python
oracle delete误删除表数据后如何恢复
2022/06/28 Oracle