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 相关文章推荐
第一节--面向对象编程
Nov 16 PHP
同一空间绑定多个域名而实现访问不同页面的PHP代码
Dec 06 PHP
Session服务器配置指南与使用经验的深入解析
Jun 17 PHP
Zend Framework动作助手Url用法详解
Mar 05 PHP
基于PHP生成简单的验证码
Jun 01 PHP
PHP开发制作一个简单的活动日程表Calendar
Jun 20 PHP
ThinkPHP简单使用memcache缓存的方法
Nov 15 PHP
简述php环境搭建与配置
Dec 05 PHP
PHP简单实现冒泡排序的方法
Dec 26 PHP
Laravel框架Auth用户认证操作实例分析
Sep 29 PHP
PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
Jan 02 PHP
php实现自动生成验证码的实例讲解
Nov 17 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
dedecms系统常用术语汇总
2007/04/03 PHP
使用php判断浏览器的类型和语言的函数代码
2013/02/28 PHP
linux系统下php安装mbstring扩展的二种方法
2014/01/20 PHP
ThinkPHP中create()方法自动验证实例
2017/04/26 PHP
PHP大文件分块上传功能实例详解
2019/07/22 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
input 输入框内的输入事件详细分析
2010/03/17 Javascript
JavaScript 高级篇之函数 (四)
2012/04/07 Javascript
js/jquery获取浏览器窗口可视区域高度和宽度以及滚动条高度实现代码
2012/12/17 Javascript
javascrip关于继承的小例子
2013/05/10 Javascript
jquery验证表单中的单选与多选实例
2013/08/18 Javascript
javascript中with()方法的语法格式及使用
2014/08/04 Javascript
jQuery获取上传文件的名称的正则表达式
2015/05/21 Javascript
javascript学习笔记整理(概述、变量、数据类型简介)
2015/10/25 Javascript
Mac中安装nvm的教程分享
2017/12/11 Javascript
element-ui循环显示radio控件信息的方法
2018/08/24 Javascript
10分钟彻底搞懂Http的强制缓存和协商缓存(小结)
2018/08/30 Javascript
vue 点击展开显示更多(点击收起部分隐藏)
2019/04/09 Javascript
JavaScript如何实现监听键盘输入和鼠标监点击
2020/07/20 Javascript
[55:25]VGJ.T vs Optic Supermajor小组赛D组 BO3 第三场 6.3
2018/06/04 DOTA
python3.3教程之模拟百度登陆代码分享
2014/01/16 Python
Python实现的简单计算器功能详解
2018/08/25 Python
使用Django2快速开发Web项目的详细步骤
2019/01/06 Python
python日期相关操作实例小结
2019/06/24 Python
python批量图片处理简单示例
2019/08/06 Python
python图形绘制奥运五环实例讲解
2019/09/14 Python
如何通过Python3和ssl实现加密通信功能
2020/05/09 Python
Python实现电视里的5毛特效实例代码详解
2020/05/15 Python
使用CSS3 制作一个material-design 风格登录界面实例
2016/12/12 HTML / CSS
Dillard’s百货官网:Dillards.com
2018/05/26 全球购物
工作过失检讨书
2014/02/23 职场文书
农民工工资承诺书大全
2015/05/04 职场文书
党小组鉴定意见
2015/06/02 职场文书
开国大典观后感
2015/06/04 职场文书
任长霞观后感
2015/06/16 职场文书
Python-OpenCV实现图像缺陷检测的实例
2021/06/11 Python