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 相关文章推荐
一个很方便的 XML 类!!原创的噢
Oct 09 PHP
ThinkPHP3.1新特性之动态设置自动完成及自动验证示例代码
Jun 23 PHP
php操作XML、读取数据和写入数据的实现代码
Aug 15 PHP
php中数字、字符与对象判断函数用法实例
Nov 26 PHP
smarty实现多级分类的方法
Dec 05 PHP
使用php转义输出HTML到JavaScript
Mar 27 PHP
老生常谈PHP数组函数array_merge(必看篇)
May 25 PHP
PHP实现动态添加XML中数据的方法
Mar 30 PHP
Yii2框架类自动加载机制实例分析
May 02 PHP
PHP学习记录之常用的魔术常量详解
Dec 12 PHP
TP5框架实现的数据库备份功能示例
Apr 05 PHP
PHP数组与字符串互相转换实例
May 05 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相当简单的分页类
2008/10/02 PHP
解决163/sohu/sina不能够收到PHP MAIL函数发出邮件的问题
2009/03/13 PHP
php返回相对时间(如:20分钟前,3天前)的方法
2015/04/14 PHP
php精确的统计在线人数的方法
2015/10/21 PHP
Zend Framework教程之Application用法实例详解
2016/03/14 PHP
php 判断过去离现在几年的函数(实例代码)
2016/11/15 PHP
php实现的后台表格分页功能示例
2017/10/23 PHP
laravel开发环境homestead搭建过程详解
2020/07/03 PHP
javascript学习之闭包分析
2010/12/02 Javascript
更优雅的事件触发兼容
2011/10/24 Javascript
javascript实现焦点滚动图效果 具体方法
2013/06/24 Javascript
JS获得QQ号码的昵称,头像,生日的简单实例
2013/12/04 Javascript
Javascript常用字符串判断函数代码分享
2014/12/08 Javascript
jQuery中:eq()选择器用法实例
2014/12/29 Javascript
JQuery中$.each 和$(selector).each()的区别详解
2015/03/13 Javascript
bootstrap导航条实现代码
2016/12/28 Javascript
Vue.Draggable实现拖拽效果
2020/07/29 Javascript
Angular4学习笔记之准备和环境搭建项目
2017/08/01 Javascript
使用react-router4.0实现重定向和404功能的方法
2017/08/28 Javascript
JS异步执行结果获取的3种解决方式
2019/02/19 Javascript
webpack4 从零学习常用配置(小结)
2019/05/28 Javascript
React学习之JSX与react事件实例分析
2020/01/06 Javascript
Javascript摸拟自由落体与上抛运动原理与实现方法详解
2020/04/08 Javascript
[01:03:37]Secret vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
通过实例浅析Python对比C语言的编程思想差异
2015/08/30 Python
python3爬取数据至mysql的方法
2018/06/26 Python
Python基础之条件控制操作示例【if语句】
2019/03/23 Python
python爬虫 爬取58同城上所有城市的租房信息详解
2019/07/30 Python
Python Numpy库常见用法入门教程
2020/01/16 Python
Python爬取YY评级分数并保存数据实现过程解析
2020/06/01 Python
简约控的天堂:The Undone
2016/12/21 全球购物
英国知名美妆护肤在线商城:Zest Beauty
2018/04/24 全球购物
美国领先的个性化礼品商城:Personalization Mall
2019/07/27 全球购物
日本最大的购物网站:日本乐天市场(Rakuten Ichiba)
2020/11/04 全球购物
幼儿园教师师德承诺书
2015/04/28 职场文书
pytorch实现线性回归以及多元回归
2021/04/11 Python