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编码规范-php coding standard
Mar 16 PHP
第七章 php自定义函数实现代码
Dec 30 PHP
PHP运行模式的深入理解
Jun 03 PHP
解析在PHP中使用全局变量的几种方法
Jun 24 PHP
php Imagick获取图片RGB颜色值
Jul 28 PHP
详解WordPress中的头像缓存和代理中的缓存更新方法
Mar 01 PHP
PHP使用stream_context_create()模拟POST/GET请求的方法
Apr 02 PHP
Linux平台php命令行程序处理管道数据的方法
Nov 10 PHP
php面向对象之反射功能与用法分析
Mar 29 PHP
PHP信号处理机制的操作代码讲解
Apr 19 PHP
PHP使用redis位图bitMap 实现签到功能
Oct 08 PHP
PHP基于ip2long实现IP转换整形
Dec 11 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上传文件时自动分配路径的方法
2015/01/09 PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
2016/09/11 PHP
php写入文件不覆盖的实例讲解
2019/09/17 PHP
TP5框架实现一次选择多张图片并预览的方法示例
2020/04/04 PHP
js 变量类型转换常用函数与代码[比较全]
2009/12/01 Javascript
JS 退出系统并跳转到登录界面的实现代码
2013/06/29 Javascript
利用jQuery实现可输入搜索文字的下拉框
2013/10/23 Javascript
JS随机漂浮广告代码具体实例
2013/11/19 Javascript
jQuery的基本概念与高级编程
2015/05/14 Javascript
JS中多种方式创建对象详解
2016/03/22 Javascript
Jquery为DIV添加click事件的简单实例
2016/06/02 Javascript
第一次接触Bootstrap框架
2016/10/24 Javascript
Bootstrap Modal遮罩弹出层(完整版)
2016/11/21 Javascript
jQuery插件FusionCharts绘制的2D双面积图效果示例【附demo源码】
2017/04/11 jQuery
NodeJS收发GET和POST请求的示例代码
2017/08/25 NodeJs
浅谈angular4实际项目搭建总结
2017/12/01 Javascript
详解webpack多页面配置记录
2018/01/22 Javascript
vue 简单自动补全的输入框的示例
2018/03/12 Javascript
AngularJS自定义过滤器用法经典实例总结
2018/05/17 Javascript
Vue弹出菜单功能的实现代码
2018/09/12 Javascript
Node.js+ELK日志规范的实现
2019/05/23 Javascript
javascript实现前端input密码输入强度验证
2020/06/24 Javascript
vue使用swiper实现左右滑动切换图片
2020/10/16 Javascript
Vue-router中hash模式与history模式的区别详解
2020/12/15 Vue.js
[37:02]OG vs INfamous 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python执行get提交的方法
2015/04/29 Python
python smtplib发送带附件邮件小程序
2018/05/22 Python
python创建属于自己的单词词库 便于背单词
2019/07/30 Python
Python中six模块基础用法
2019/12/08 Python
Python用类实现扑克牌发牌的示例代码
2020/06/01 Python
新加坡网上美容店:Hermo新加坡
2019/06/19 全球购物
汽车队司机先进事迹材料
2014/02/01 职场文书
本溪水洞导游词
2015/02/11 职场文书
2015年暑期见闻
2015/07/14 职场文书
数据分析数据库ClickHouse在大数据领域应用实践
2022/04/03 MySQL
提高系统的吞吐量解决数据库重复写入问题
2022/04/23 MySQL