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 相关文章推荐
libmysql.dll与php.ini是否真的要拷贝到c:\windows目录下呢
Mar 15 PHP
PHP操作xml代码
Jun 17 PHP
php简单对象与数组的转换函数代码(php多层数组和对象的转换)
May 18 PHP
第七章 php自定义函数实现代码
Dec 30 PHP
PHP实现搜索相似图片
Sep 22 PHP
php使用高斯算法实现图片的模糊处理功能示例
Nov 11 PHP
浅谈PHP的数据库接口和技术
Dec 09 PHP
thinkphp关于简单的权限判定方法
Apr 03 PHP
PHP魔术方法之__call与__callStatic使用方法
Jul 23 PHP
php简单中奖算法(实例)
Aug 15 PHP
Yii2.0实现生成二维码功能实例
Oct 24 PHP
yii2 url重写并隐藏index.php方法
Dec 10 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
javascript 控制 html元素 显示/隐藏实现代码
2009/09/01 Javascript
FileUpload上传图片(图片不变形)
2010/08/05 Javascript
关于JavaScript的with 语句的使用方法
2011/05/09 Javascript
基于jquery的不规则矩形的排列实现代码
2012/04/16 Javascript
jquery ajax提交整个表单元素的快捷办法
2013/03/27 Javascript
js实现简单登录功能的实例代码
2013/11/09 Javascript
js获取当月最后一天实例代码
2013/11/19 Javascript
javascript实现单击和双击并存的方法
2014/12/13 Javascript
原生JS实现美图瀑布流布局赏析
2015/09/07 Javascript
Highcharts使用简例及异步动态读取数据
2015/12/30 Javascript
JS清除文本框内容离开在恢复及鼠标离开文本框时触发js的方法
2016/01/12 Javascript
js拖拽功能实现代码解析
2016/11/28 Javascript
jQuery常见的选择器及用法介绍
2016/12/20 Javascript
详解Vue.js动态绑定class
2016/12/20 Javascript
微信小程序 数组(增,删,改,查)等操作实例详解
2017/01/05 Javascript
Webpack如何引入bootstrap的方法
2017/06/17 Javascript
vue 微信授权登录解决方案
2018/04/10 Javascript
vue addRoutes实现动态权限路由菜单的示例
2018/05/15 Javascript
JavaScript常用截取字符串的三种方式用法区别实例解析
2018/05/15 Javascript
vue+高德地图写地图选址组件的方法
2019/05/18 Javascript
Python格式化压缩后的JS文件的方法
2015/03/05 Python
import的本质解析
2017/10/30 Python
python中闭包Closure函数作为返回值的方法示例
2017/12/17 Python
python 协程中的迭代器,生成器原理及应用实例详解
2019/10/28 Python
基于CSS3特效之动画:animation的应用
2013/05/09 HTML / CSS
html5图片上传预览示例分享
2014/04/14 HTML / CSS
HTML5中图片之间的缝隙完美解决方法
2017/07/07 HTML / CSS
HTML5如何使用SVG的方法示例
2019/01/11 HTML / CSS
简述安装Slackware Linux系统的过程
2012/05/08 面试题
旅游与酒店管理的自我评价分享
2013/11/03 职场文书
制药工程专业毕业生推荐信
2013/12/24 职场文书
小学安全教育材料
2014/02/17 职场文书
行政专员的岗位职责
2014/03/10 职场文书
英语辞职信范文
2015/02/28 职场文书
2016年中学植树节活动总结
2016/03/16 职场文书
基于Pygame实现简单的贪吃蛇游戏
2021/12/06 Python