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 相关文章推荐
在PHP3中实现SESSION的功能(二)
Oct 09 PHP
php trim 去除空字符的定义与语法介绍
May 31 PHP
PHP中的float类型使用说明
Jul 27 PHP
php中存储用户ID和密码到mysql数据库的方法
Feb 06 PHP
解析PHP将对象转换成数组的方法(兼容多维数组类型)
Jun 21 PHP
php数组查找函数总结
Nov 18 PHP
Yii学习总结之数据访问对象 (DAO)
Feb 22 PHP
php中使用key,value,current,next和prev函数遍历数组的方法
Mar 17 PHP
Twig模板引擎用法入门教程
Jan 20 PHP
php实现购物车功能(以大苹果购物网为例)
Mar 09 PHP
php 读写json文件及修改json的方法
Mar 07 PHP
用PHP的反射实现委托模式的讲解
Mar 22 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
AJAX for PHP简单表数据查询实例
2007/01/02 PHP
一个简单的PHP投票程序源码
2007/03/11 PHP
destoon整合ucenter后注册页面不跳转的解决方法
2014/06/21 PHP
Laravel实现构造函数自动依赖注入的方法
2016/03/16 PHP
Yii 2.0在Grid中格式化时间方法示例
2017/06/06 PHP
Laravel框架实现利用监听器进行sql语句记录功能
2018/06/06 PHP
javascript中实现兼容JAVA的hashCode算法代码分享
2020/08/11 Javascript
js闭包实例汇总
2014/11/09 Javascript
js时间日期格式化封装函数
2014/12/02 Javascript
jquery中的工具使用方法$.isFunction, $.isArray(), $.isWindow()
2015/08/09 Javascript
Angular的事件和表单详解
2016/12/26 Javascript
纯原生js实现贪吃蛇游戏
2020/04/16 Javascript
微信小程序中使用javascript 回调函数
2017/05/11 Javascript
利用ECharts.js画K线图的方法示例
2018/01/10 Javascript
vue Element左侧无限级菜单实现
2020/06/10 Javascript
vue中如何自定义右键菜单详解
2020/12/08 Vue.js
JavaScript实现弹出窗口效果
2020/12/09 Javascript
vue 在服务器端直接修改请求的接口地址
2020/12/19 Vue.js
[00:47]TI7不朽珍藏III——沙王不朽展示
2017/07/15 DOTA
python实现文件名批量替换和内容替换
2014/03/20 Python
使用Python的Treq on Twisted来进行HTTP压力测试
2015/04/16 Python
python批量替换页眉页脚实例代码
2018/01/22 Python
python 批量修改/替换数据的实例
2018/07/25 Python
windows下Python安装、使用教程和Notepad++的使用教程
2019/10/06 Python
Python While循环语句实例演示及原理解析
2020/01/03 Python
Python线程协作threading.Condition实现过程解析
2020/03/12 Python
Carter’s官方旗舰店:美国受欢迎的婴童服装品牌
2018/01/21 全球购物
Kipling意大利官网:世界著名的时尚休闲包袋品牌
2019/06/05 全球购物
现代绅士日常奢侈品:Todd Snyder
2019/12/13 全球购物
环境科学专业个人求职信
2013/12/15 职场文书
消防安全管理制度
2014/02/01 职场文书
商铺门面租房协议书
2014/10/21 职场文书
个人简历自我评价怎么写
2015/03/10 职场文书
薪资证明范本
2015/06/19 职场文书
学校教代会开幕词
2016/03/04 职场文书
彻底卸载VMware虚拟机的超详细步骤记录
2022/07/15 Servers