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
php cookie 作用范围?不要在当前页面使用你的cookie
Mar 24 PHP
PHP关联链接常用代码
Nov 05 PHP
php实现俄罗斯乘法实例
Mar 07 PHP
PHP+Mysql+jQuery文件下载次数统计实例讲解
Oct 10 PHP
PHP实现长文章分页实例代码(附源码)
Feb 03 PHP
PHP实现获取并生成数据库字典的方法
May 04 PHP
Django中通过定时任务触发页面静态化的处理方式
Aug 29 PHP
PHP实现单文件、多个单文件、多文件上传函数的封装示例
Sep 02 PHP
php快速导入大量数据的实例方法
Sep 23 PHP
基于Laravel 5.2 regex验证的正确写法
Sep 29 PHP
php实现对短信验证码发送次数的限制实例讲解
Mar 04 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相关资料
2006/10/09 PHP
隐藏你的.php文件的实现方法
2007/03/19 PHP
非集成环境的php运行环境(Apache配置、Mysql)搭建安装图文教程
2016/04/12 PHP
thinkphp利用模型通用数据编辑添加和删除的实例代码
2016/11/20 PHP
PHP实现字符串翻转功能的方法【递归与循环算法】
2017/11/03 PHP
PHP聚合式迭代器接口IteratorAggregate用法分析
2017/12/28 PHP
redis+php实现微博(二)发布与关注功能详解
2019/09/23 PHP
JavaScript弹簧振子超简洁版 完全符合能量守恒,胡克定理
2009/10/25 Javascript
javascript 限制输入脚本大全
2009/11/03 Javascript
js chrome浏览器判断代码
2010/03/28 Javascript
jquery 新手学习常见问题解决方法
2010/04/18 Javascript
$.ajax返回的JSON无法执行success的解决方法
2011/09/09 Javascript
基于jquery实现的可编辑下拉框实现代码
2014/08/02 Javascript
详解JavaScript数组的操作大全
2015/10/19 Javascript
实例详解JSON数据格式及json格式数据域字符串相互转换
2016/01/07 Javascript
jQuery实现页面下拉100像素出现悬浮窗口的方法
2016/09/05 Javascript
微信小程序  TLS 版本必须大于等于1.2问题解决
2017/02/22 Javascript
jQuery插件Validation表单验证详解
2018/05/26 jQuery
详解vue.js根据不同环境(正式、测试)打包到不同目录
2018/07/13 Javascript
Vue如何获取数据列表展示
2019/12/11 Javascript
Python实现把json格式转换成文本或sql文件
2015/07/10 Python
python用户管理系统
2018/03/13 Python
python 获取当天凌晨零点的时间戳方法
2018/05/22 Python
Python 实现数据结构中的的栈队列
2019/05/16 Python
python单例设计模式实现解析
2020/01/07 Python
Python 内存管理机制全面分析
2021/01/16 Python
Autopep8的使用(python自动编排工具)
2021/03/02 Python
人力资源专员自我评价怎么写
2013/09/19 职场文书
入党申请书自我鉴定
2013/10/12 职场文书
劳资专员岗位职责
2013/12/27 职场文书
初三物理教学反思
2014/01/21 职场文书
岗位职责风险点
2014/03/12 职场文书
群众路线党员自我评议范文2014
2014/09/24 职场文书
2014年公务员转正工作总结
2014/11/07 职场文书
MySQL命令行操作时的编码问题详解
2021/04/14 MySQL
MSSQL基本语法操作
2022/04/11 SQL Server