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 相关文章推荐
初探PHP5
Oct 09 PHP
php getimagesize 上传图片的长度和宽度检测代码
May 15 PHP
PHP header()函数使用详细(301、404等错误设置)
Apr 17 PHP
php数组使用规则分析
Feb 27 PHP
详解WordPress中用于更新和获取用户选项数据的PHP函数
Mar 08 PHP
PHP面向对象之领域模型+数据映射器实例(分析)
Jun 21 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
Nov 16 PHP
PHP设计模式之单例模式原理与实现方法分析
Apr 25 PHP
PHP实现生成数据字典功能示例
May 24 PHP
php中如何执行linux命令详解
Nov 06 PHP
PHP面向对象程序设计(OOP)之方法重写(override)操作示例
Dec 21 PHP
PHP添加PNG图片背景透明水印操作类定义与用法示例
Mar 12 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生成静态HTML速度快类库
2007/03/18 PHP
discuz的php防止sql注入函数
2011/01/17 PHP
PHP数组传递是值传递而非引用传递概念纠正
2013/01/31 PHP
php中使用preg_replace函数匹配图片并加上链接的方法
2013/02/06 PHP
php中socket通信机制实例详解
2015/01/03 PHP
windows7配置Nginx+php+mysql的详细教程
2016/09/04 PHP
PHPExcel在linux环境下导出报500错误的解决方法
2017/01/26 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
浅谈PHP中如何实现Hook机制
2017/11/14 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
PHP微信H5支付开发实例
2018/07/25 PHP
详解php命令注入攻击
2019/04/06 PHP
简单的js分页脚本
2009/05/21 Javascript
使用Json比用string返回数据更友好,也更面向对象一些
2011/09/13 Javascript
javascript判断ie浏览器6/7版本加载不同样式表的实现代码
2011/12/26 Javascript
jQuery中offset()方法用法实例
2015/01/16 Javascript
Javascript中arguments用法实例分析
2015/06/13 Javascript
js解决movebox移动问题
2016/03/29 Javascript
JS判断元素是否在数组内的实现代码
2016/03/30 Javascript
D3.js实现雷达图的方法详解
2016/09/22 Javascript
jquery ajax后台返回list,前台用jquery遍历list的实现
2016/10/30 Javascript
jQuery简单自定义图片轮播插件及用法示例
2016/11/21 Javascript
详解node nvm进行node多版本管理
2017/10/21 Javascript
解决layui 表单元素radio不显示渲染的问题
2019/09/04 Javascript
jQuery zTree如何改变指定节点文本样式
2020/10/16 jQuery
[57:55]完美世界DOTA2联赛PWL S3 Magma vs Phoenix 第二场 12.12
2020/12/16 DOTA
Django对接支付宝实现支付宝充值金币功能示例
2019/12/17 Python
使用python的pyplot绘制函数实例
2020/02/13 Python
利物浦足球俱乐部官方网上商店:Liverpool FC Official Store
2018/01/13 全球购物
联想德国官网:Lenovo Germany
2018/07/04 全球购物
英国奢侈品在线精品店:Hervia
2020/09/03 全球购物
逃课打麻将检讨书
2014/10/05 职场文书
2015年创先争优活动总结
2015/03/27 职场文书
用Python可视化新冠疫情数据
2022/01/18 Python
B站评分公认最好看的动漫,你的名字评分9.9,第六备受喜欢
2022/03/18 日漫
vue中this.$http.post()跨域和请求参数丢失的解决
2022/04/08 Vue.js