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 过滤器实现代码
Aug 09 PHP
zen cart新进商品的随机排序修改方法
Sep 10 PHP
PHP中去除换行解决办法小结(PHP_EOL)
Nov 27 PHP
使用php实现截取指定长度
Aug 06 PHP
php之Smarty模板使用方法示例详解
Jul 08 PHP
PHP定时任务延缓执行的实现
Oct 08 PHP
php实现window平台的checkdnsrr函数
May 27 PHP
PHP生成word文档的三种实现方式
Nov 14 PHP
thinkPHP统计排行与分页显示功能示例
Dec 02 PHP
PHP文件管理之实现网盘及压缩包的功能操作
Sep 20 PHP
yii2.0整合阿里云oss删除单个文件的方法
Sep 19 PHP
PHP 8新特性简介
Aug 18 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
多文件上传的例子
2006/10/09 PHP
php实现字符串翻转的方法
2015/03/27 PHP
php时间计算相关问题小结
2016/05/09 PHP
php实现的简单数据库操作Model类
2016/11/16 PHP
PHP中关于php.ini参数优化详解
2020/02/28 PHP
兼容多浏览器的字幕特效Marquee的通用js类
2008/07/20 Javascript
网页前台通过js非法字符过滤代码(骂人的话等等)
2010/05/26 Javascript
jQuery EasyUI API 中文文档 - ComboBox组合框
2011/10/07 Javascript
UI Events 用户界面事件
2012/06/27 Javascript
js创建对象的区别示例介绍
2014/07/24 Javascript
jQuery滚动条插件nanoscroller使用指南
2015/04/21 Javascript
JavaScript实现跨浏览器的添加及删除事件绑定函数实例
2015/08/04 Javascript
jQuery带时间的日期控件代码分享
2015/08/26 Javascript
一次$.getJSON不执行的简单记录
2016/07/19 Javascript
jQuery学习笔记之回调函数
2016/08/15 Javascript
js中变量的连续赋值(实例讲解)
2017/07/08 Javascript
canvas绘制爱心的几种方法总结(推荐)
2017/10/31 Javascript
浅谈jquery fullpage 插件增加头部和版权的方法
2018/03/20 jQuery
vue2.0$nextTick监听数据渲染完成之后的回调函数方法
2018/09/11 Javascript
vue-cli 目录结构详细讲解总结
2019/01/15 Javascript
JavaScript中的垃圾回收与内存泄漏示例详解
2019/05/02 Javascript
vue中的v-if和v-show的区别详解
2019/09/01 Javascript
详解从vue-loader源码分析CSS Scoped的实现
2019/09/23 Javascript
vscode中Vue别名路径提示的实现
2020/07/31 Javascript
[14:00]DOTA2国际邀请赛史上最长大战 赛后专访B神
2013/08/10 DOTA
[01:08]2014DOTA2展望TI 剑指西雅图LGD战队专访
2014/06/30 DOTA
python 输出一个两行字符的变量
2009/02/05 Python
用python处理图片实现图像中的像素访问
2018/05/04 Python
基于Python绘制个人足迹地图
2020/06/01 Python
国际性能运动服装品牌:Dare 2b
2018/07/27 全球购物
JPA面试常见问题
2016/11/14 面试题
如何反序的迭代一个序列?how do I iterate over a sequence in reverse order
2012/02/04 面试题
美术教师自我鉴定
2014/02/12 职场文书
员工工作及收入证明
2014/10/28 职场文书
营销经理工作检讨书
2014/11/03 职场文书
nginx的zabbix 5.0安装部署的方法步骤
2021/07/16 Servers