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数字转汉字代码(算法)
Oct 08 PHP
解析PHP高效率写法(详解原因)
Jun 20 PHP
php中time()和mktime()方法的区别
Sep 28 PHP
php读取3389的脚本
May 06 PHP
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
Jun 04 PHP
PHP采集类Snoopy抓取图片实例
Jun 19 PHP
php利用cookies实现购物车的方法
Dec 10 PHP
PHP下使用mysqli的函数连接mysql出现warning: mysqli::real_connect(): (hy000/1040): ...
Feb 14 PHP
分享一个漂亮的php验证码类
Sep 29 PHP
PHP使用imagick扩展实现合并图像的方法
Apr 25 PHP
PHP进阶学习之垃圾回收机制详解
Jun 18 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
Dec 20 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加速 eAccelerator配置和使用指南
2009/06/05 PHP
PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
2014/06/26 PHP
PHP中的命名空间详细介绍
2015/07/02 PHP
php自动识别文字编码并转换为目标编码的方法
2015/08/08 PHP
摘自启点的main.js
2008/04/20 Javascript
基于jQuery制作迷你背词汇工具
2010/07/27 Javascript
jquery 滚动条事件简单实例
2013/07/12 Javascript
jQuery插件jPaginate实现无刷新分页
2015/05/04 Javascript
jQuery 3.0 的变化及使用方法
2016/02/01 Javascript
jQuery给div,Span, a ,button, radio 赋值与取值
2016/06/24 Javascript
jQuery简单实现页面元素置顶时悬浮效果示例
2016/08/01 Javascript
微信小程序 天气预报开发实例代码源码
2017/01/20 Javascript
详解一次Vue低版本安卓白屏问题的解决过程
2019/05/30 Javascript
vue history 模式打包部署在域名的二级目录的配置指南
2019/07/02 Javascript
Python专用方法与迭代机制实例分析
2014/09/15 Python
探索Python3.4中新引入的asyncio模块
2015/04/08 Python
Golang与python线程详解及简单实例
2017/04/27 Python
python3.4下django集成使用xadmin后台的方法
2017/08/15 Python
Python基础教程之内置函数locals()和globals()用法分析
2018/03/16 Python
django使用haystack调用Elasticsearch实现索引搜索
2019/07/24 Python
pytorch中的卷积和池化计算方式详解
2020/01/03 Python
使用Jupyter notebooks上传文件夹或大量数据到服务器
2020/04/14 Python
踩坑:pytorch中eval模式下结果远差于train模式介绍
2020/06/23 Python
Ubuntu16安装Python3.9的实现步骤
2020/12/15 Python
HTML5的自定义属性data-*详细介绍和JS操作实例
2014/04/10 HTML / CSS
浅析HTML5中的 History 模式
2017/06/22 HTML / CSS
一些Solaris面试题
2015/12/22 面试题
考试违纪检讨书
2014/02/02 职场文书
股权投资意向书
2014/04/01 职场文书
项目申报专员岗位职责
2014/07/09 职场文书
党的群众路线教育实践活动剖析材料
2014/09/30 职场文书
个人务虚会发言材料
2014/10/20 职场文书
临时工聘用合同协议书
2014/10/29 职场文书
捐助倡议书
2015/01/19 职场文书
2015年助理政工师工作总结
2015/05/26 职场文书
3050和2060哪个好 性能差多少 差距有多大 谁更有性价比
2022/06/17 数码科技