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生成SessionID和图片校验码的思路和实现代码
Mar 10 PHP
php方法调用模式与函数调用模式简例
Sep 20 PHP
PHP常用技巧总结(附函数代码)
Feb 04 PHP
php实现微信公众平台账号自定义菜单类
Dec 02 PHP
smarty模板引擎从php中获取数据的方法
Jan 22 PHP
PHP实现的带超时功能get_headers函数
Feb 10 PHP
PHP中抽象类和抽象方法概念与用法分析
May 24 PHP
thinkPHP5.0框架开发规范简介
Mar 25 PHP
浅谈PHP表单提交(POST&GET&URL编/解码)
Apr 03 PHP
PHP实现的一致性Hash算法详解【分布式算法】
Mar 31 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
Jun 13 PHP
使用PHPUnit进行单元测试并生成代码覆盖率报告的方法
Mar 08 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去除数组中重复的元素并按键名排序函数
2008/08/18 PHP
PHP随机字符串生成代码(包括大小写字母)
2013/06/24 PHP
php仿QQ验证码的实例分析
2013/07/01 PHP
PHP导入导出Excel代码
2015/07/07 PHP
优化WordPress中文章与评论的时间显示
2016/01/12 PHP
javascript 无提示关闭窗口脚本
2009/08/17 Javascript
被jQuery折腾得半死,揭秘为何jQuery为何在IE/Firefox下均无法使用
2010/01/22 Javascript
javascript获取元素离文档各边距离的方法
2015/02/13 Javascript
JQuery ztree 异步加载实例讲解
2016/02/25 Javascript
jQuery UI Bootstrap是什么?
2016/06/17 Javascript
基于zepto.js简单实现上传图片
2016/06/21 Javascript
AngularJs表单验证实例代码解析
2016/11/29 Javascript
jQuery.Form上传文件操作
2017/02/05 Javascript
Vue组件开发初探
2017/02/14 Javascript
轻松理解JavaScript之AJAX
2017/03/15 Javascript
解决JS外部文件中文注释出现乱码问题
2017/07/09 Javascript
nodejs简单访问及操作mysql数据库的方法示例
2018/03/15 NodeJs
VUE引入第三方js包及调用方法讲解
2019/03/01 Javascript
Vue + Scss 动态切换主题颜色实现换肤的示例代码
2020/04/27 Javascript
微信小程序组件生命周期的踩坑记录
2021/03/03 Javascript
[11:12]2018DOTA2国际邀请赛寻真——绿色长城OpTic
2018/08/10 DOTA
python之wxPython应用实例
2014/09/28 Python
推荐11个实用Python库
2015/01/23 Python
在PyCharm中批量查找及替换的方法
2019/01/20 Python
python numpy 按行归一化的实例
2019/01/21 Python
Pycharm 2019 破解激活方法图文详解
2019/10/11 Python
pytorch梯度剪裁方式
2020/02/04 Python
回馈慈善的设计师太阳镜:DIFF eyewear
2019/10/17 全球购物
Calphalon美国官网:美国顶级锅具品牌
2020/02/05 全球购物
经典c++面试题二
2015/08/14 面试题
预备党员转正思想汇报
2014/01/12 职场文书
24岁生日感言
2014/01/13 职场文书
2015年计生协会工作总结
2015/04/24 职场文书
民警忠诚教育心得体会
2016/01/23 职场文书
win11系统中dhcp服务异常什么意思? Win11 DHCP服务异常修复方法
2022/04/08 数码科技
2022年显卡天梯图(6月更新)
2022/06/17 数码科技