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&mysql(六)
Oct 09 PHP
oracle资料库函式库
Oct 09 PHP
PHP添加Xdebug扩展的方法
Feb 12 PHP
在win系统安装配置 Memcached for PHP 5.3 图文教程
Mar 03 PHP
php中使用in_array() foreach array_search() 查找数组是否包含时的性能对比
Apr 14 PHP
PHP超牛逼无限极分类生成树方法
May 11 PHP
PHP+JS实现大规模数据提交的方法
Jul 02 PHP
jQuery+Ajax+PHP“喜欢”评级功能实现代码
Oct 08 PHP
利用php-cli和任务计划实现刷新token功能的方法
May 03 PHP
在Laravel中使用GuzzleHttp调用第三方服务的API接口代码
Oct 15 PHP
php加速缓存器opcache,apc,xcache,eAccelerator原理与配置方法实例分析
Mar 02 PHP
PHP实现计算器小功能
Aug 28 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
教你IIS6的PHP最佳配置方法
2006/09/05 PHP
php简单的留言板与回复功能具体实现
2014/02/19 PHP
php发送与接收流文件的方法
2015/02/11 PHP
PHP迭代与递归实现无限级分类
2017/08/28 PHP
javascript数组组合成字符串的脚本
2021/01/06 Javascript
javascript YUI 读码日记之 YAHOO.util.Dom - Part.4
2008/03/22 Javascript
extjs 3.31 TreeGrid实现静态页面加载json到TreeGrid里面
2013/04/02 Javascript
js图片翻书效果代码分享
2015/08/20 Javascript
Vue.js动态添加、删除选题的实例代码
2016/09/30 Javascript
bootstrap多种样式进度条展示
2016/12/20 Javascript
JavaScript对象封装的简单实现方法(3种方法)
2017/01/03 Javascript
bootstrap datetimepicker实现秒钟选择下拉框
2017/01/05 Javascript
JS扩展String.prototype.format字符串拼接的功能
2018/03/09 Javascript
微信小程序使用二次贝塞尔曲线画波浪
2018/12/25 Javascript
解决Vue 给mapState中定义的属性赋值报错的问题
2020/06/22 Javascript
js实现计算器功能
2020/08/10 Javascript
[01:00:14]DOTA2官方TI8总决赛纪录片 真视界True Sight
2019/01/16 DOTA
python实现分析apache和nginx日志文件并输出访客ip列表的方法
2015/04/04 Python
Python引用模块和查找模块路径
2016/03/17 Python
如何通过Python实现标签云算法
2019/07/02 Python
Django 实现前端图片压缩功能的方法
2019/08/07 Python
Python reshape的用法及多个二维数组合并为三维数组的实例
2020/02/07 Python
使用keras2.0 将Merge层改为函数式
2020/05/23 Python
详解利用css3的var()实现运行时改变scss的变量值
2021/03/02 HTML / CSS
HTML5 微格式和相关的属性名称
2010/02/10 HTML / CSS
经济学博士求职自荐信范文
2013/11/23 职场文书
英文自我鉴定
2013/12/10 职场文书
优秀演讲稿范文
2013/12/29 职场文书
煤矿班组长竞聘书
2014/03/31 职场文书
建筑工程专业大学生求职信
2014/04/23 职场文书
副校长竞聘演讲稿
2014/09/01 职场文书
见习报告格式要求
2014/11/04 职场文书
初婚初育证明范本
2015/06/18 职场文书
2019年作为一名实习生的述职报告
2019/09/29 职场文书
springboot为异步任务规划自定义线程池的实现
2022/06/14 Java/Android
MySQL实现用逗号进行拼接、以逗号进行分割
2022/12/24 MySQL