ascii码扩展 php,php与ascii码

首先 简单说一下历史,ascii码最开始是美国人搞出来的,用来干什么呢?我们知道,计算机只知道0和1,如果我们要计算机识别除了01之外的字符,例如 'a',我们要先告诉计算机‘1100001’就是'a'。跟摩斯密码一样,敲几下三长两短就是代表sos(开玩笑)。所谓的字符编码,就是跟计算机打交 道,跟计算机约定一连串的0101到底代表了什么字符。

ascii编码是鼻祖了,不过由于ascii只有8bits,而且实际上用到的是7位,所以能表示的只有128个字符(00000000~01111111)。这128个字符包括了可打印的普通字符,也包括了不可打印的命令字符。看下表。

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

这128个字符,对于美国人来说,应该是足够了。但对于一些使用非英文字符的国家地区,例如拉丁文,发文,俄文,中文,这就绝对不够。

所以后来就有人搞了扩展的ascii,也有人搞了新的字符编码,在原来的8位基础上扩展到16位,32位。我们常见的ISOxxxx,GB2312,GBK,BIG 5,unicode....都是后来发展起来的。

虽然这 些字符编码有些之间是不兼容,例如就中文而言,gb2312是不兼容unicode的,就是说,同一个汉字,底层约定的二进制是不一样的。网页上的乱码就 是出于此。但是这些后来发展的字符编码都向下兼容了ascii。这就是为什么utf-8(unicode)和gbk/gb2312显示英文是不会有乱码, 而显示中文会容易乱码。因为他们都兼容ascii,所以52个字母的显示都是按ascii标准。但ascii是没中文的,所以unicode,gbk都按 各自标准解释了。

从简单入手,我们先来看ascii标准的编码。弄清楚PHP里面的二进制,十进制,八进制,十六进制,字符的表示与转化。

先来说一下一些表示法:

Dec:十进制

Hex:十六进制

Oct:八进制

Bin:二进制

所以数字16表示为:16D = 01H = 018O = 1000 0000B

上面这些都是一些表示法而已。方便给人看的。

=================================================================================================

现在有一个需求,在程序中输入一个十六进制数,

让计算机显示对应的ascii字符。例如就41H就对应A。

方法一:

转义字符:转义字符里提供\xdd和\ddd,

\xdd表示十六进制,\ddd表示八进制

所以我们可以:

echo"\x41";//十六进制,\x开头

echo"\101";//八进制,随便几位

?>

注意:转义字符只提供了十六进制和八进制转换到字符,没有提供二进制、十进制转换到字符。所以要用另外一种方法。

方法二:

用php里面的

chr()函数。这个函数参数很简单,就是ascii码对应的十进制,十六进制,八进制。

十进制:直接写整数

八进制:

第一位肯定是0,后面随便几位

十六进制:0xdd

二进制:

字符串

注意:一定要记清楚十六进制是0xdd

echochr(65);//十进制,由于都输数,所以没必要加双引号了

echochr(0x41);//十六进制

echochr(0101);//八进制,三位,最高位补零

echochr('01000001');//二进制,注意,这里的二进制一定要看做字符串,加引号!上面三个都不用加

?>

方法三

用php里面的

printf/sprintf()函数格式化输出

printf("%c", 0x41);//第二个参数一定不能用单/双引号

printf("%c", 0101);//第二个参数一定不能用单/双引号

printf("%c", 65);//第二个参数一定不能用单/双引号

printf("%c",'01000001');

?>

第二个参数格式基本跟chr()的一样,8进制,10进制,16进制都不加引号,二进制就要加引号。8进制首位为0,16进制首位为0x。

====================================================================================

现在是根据一个字符提取ascii表中的对应值

方法一:

ord()函数

echoord('A');

?>

输出结果是65。因而这个函数只能从字符转化到

十进制。

注意:这个方法只提取第一个字符。如果是一个字符串,那就没办法处理后面的字符了。

方法二:

bin2hex()函数:将字符[串]转换为

16进制

echobin2hex('A');

?>

输出结果是41。

注意,这个41只是字面数值,没有16进制的意义。

这个函数不能用一个二进制‘01101...’直接转到16进制,只能由字符串转到16进制,真怪

这个函数可以处理字符串

printf/sprintf()函数

.....发现都不行

所以,只能先用ord()转化为十进制,再转为二进制,八进制。(以后再看看pack这个函数)

====================================================================================

各种进制 的转换:

bindec():二进制转十进制

echobindec(1100);//输出12,可以加引号,也可以不加

?>

decbin():十进制转二进制,一样用

dechex() :十进制转16进制

hexdec():16进制转10进制(参数直接写值,不用写0x)

octdec():八进制转10进制

decoct():10进制转8进制

base_convert(要转换的数,原进制,目标进制):任意进制转换

echo base_convert(123, 6, 2);

?>

注意:上面的这些转换函数,由于都是数学处理函数,所以参数都不需要是字符串形式(不需要加引号),直接写数值就行了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/559657.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php手机电子相册,免费电子相册制作软件 手机电子相册制作软件

照片配上音乐加上炫酷的过渡效果点缀图片和文字说明,轻松制作成各种视频格式的电子相册。不需要专业的视频制作知识,点几下鼠标就可以把上百张数码照片制作成电子相册。视频相册可以在电脑上用播放器收看或者在高清电视上播放。也可以刻录成DVD、VCD光盘…

php+spl+栈,PHP SPL标准库之数据结构栈(SplStack)介绍

栈(Stack)是一种特殊的线性表,因为它只能在线性表的一端进行插入或删除元素(即进栈和出栈)SplStack就是继承双链表(SplDoublyLinkedList)实现栈。类摘要如下:简单使用如下://把栈想象成一个颠倒的数组$stack new SplStack();/*** 可见栈和双…

深度理解java jvm,深度理解JVM

深入理解java虚拟机要讲的内容了解历史垃圾回收机制性能监控工具性能调优案例实战认识类的文件结构类加载机制字节码执行引擎虚拟机编译及运行时优化Java线程高级1. 环境搭建安装jdk2. 内存溢出场景模拟public class Test01 {public static void main(String[] args) {//测试内…

otb100matlab,ECO for tracking 在 OTB100 基准测试和 VOT2016 数据集中的实验结果

目前本文所涉内容均未使用图形处理器。运行在有图形处理器环境下的实验将在稍后补充,敬请关注。需要准备的文章和工具有:一、集成 OTB1001.1 下载基准测试在该目录中可以看到:trackers 目录中已经包含了若干跟踪算法。而我们要做的就是把 ECO…

如何设置oracle_home变量,oracle-如何在Ubuntu 9.x上正确设置ORACLE_HOME变量?

oracle-如何在Ubuntu 9.x上正确设置ORACLE_HOME变量?我遇到了与此处列出的问题相同的问题:尽管我没有丢失密码,但如何恢复或更改Oracle sysdba密码,我最初在configure脚本中输入了两次,然后登录(localhost:…

matlab遗传算法配送路径,基于Matlab物流配送路径优化问题遗传算法的实现

维普资讯 http://doc.docsou.com第2 9卷总第 1 1 3期物流商坛物流配送路径优化问题遗传算法的实现The Re lz to f Ge tc Al o ih o a ia i n o ne i g r t m f VRP Ba e o t e M a l b s d n h tap p p p p p p p p p p p p p p ) ≯≯ p p p p ≯ ≯ p≯≯≯≯≯≯≯弓晋丽 .程…

linux挂载目录到分区,Ubuntu7.10下挂载/home目录到一个分区的方法

最近在一个9.5G的旧硬盘上装了个Ubuntu7.10,在安装时选择了自动分区安装,结果只有两个分区,/和swap,后来觉得一妥,就用gparted重新调整了分区,现在想把砍出事的分区挂载/home目录。昨晚试了一晚都没有弄好&…

linux终端美化,如何美化你的命令行终端Terminal

Linux下的终端是很有魅力的,你可以进行些简单的配置让它变得更加华丽,让枯燥的命令行也变得生动起来。下面进行些配置是我使用的,先看下效果图命令行是以我非常喜欢的Avirl为背景的,同时把终端的字体放大了,字体颜色为…

linux重启服务挂载盘消失,如何处理ECS Linux服务器重启服务器、初始化系统后数据盘不见了的情况...

本文在介绍如何处理ECS Linux服务器重启服务器、初始化系统后数据盘不见了的情况的基础上,重点探讨了其具体步骤,本文内容紧凑,希望大家可以有所收获。ECS Linux服务器重启服务器、初始化系统后数据盘不见了问题现象:Linux系统服务…

linux webshell 页面管理,instantbox:30s内快速搭建可通过webshell管理的Linux系统

点击上方蓝色字体,关注我们如何快速搭建一个Linux环境,肯定非docker莫属。但通过instantbox,可以带给我们比docker更好的体验:在不到 30s 内快速搭建一个干净、开箱即用的多个临时的Linux 系统,如Ubuntu、Centos、Arch…

局域网共享工具_局域网文件共享

局域网文件共享的方式都有哪些?局域网文件共享的方式还是比较多的,有几种可参考操作: 在多台电脑上开启网上邻居共享,这样电脑直接打开网上邻居就可以访问对方的文件夹和资料了。 可以安装辅助软件,比如:坚…

sdp ddp内存怎么分_旗舰手机跑分66万+,缩短与PC差距,手机成生产力工具也许不是梦...

现在人们无论是在买电脑还是买手机的时候总是喜欢拿跑分来衡量产品的硬件性能,其实长时间的使用产品才是体验产品性能最真实的体验,但是往往需要先有机会拿到产品才行。除此之外也许跑分是最直观的手段。虽然跑分不代表最终体验,但是通过横向…

安卓虚拟机_安卓中的安卓虚拟机,那些闪退应用有救了

“我们坚持最优质的分享,努力做你身边的资源助手“VMOS VMOS堪称安卓中的安卓虚拟机,可以在手机里面再运行一个全新的安卓系统,由于是独立在运行的操作系统,可以运用的场景非常多,例如多开应用&#xf…

c语言表达式与变量区别,C语言实战开发————基础秘籍1(C与C++的区别,输入输出,函数,变量,运算符)...

(一)学前思考学习目标1 面试2 后期服务 :JNI(C语言)C JAVA 编程思想 编程能力(二)所学内容C语言与C的区别1.C是面向过程 C面向对象2.面向过程与面向对象最大的区别在于前者更直接,但后者略显含蓄,相较于前者而言,后者更为完善,正如…

电脑一开机出rebootand_北京联想电脑维修点【蓝伟博达笔记本维修吧】

联想笔记本电脑维修,多年从事联想笔记本的维修,我公司总结出联想leovo笔记本电脑常见故障,能准确快速判断出联想笔记本出现该故障的相应损坏部件,欢迎联想电脑维修 北京联想笔记本电脑主板维修。用户到店体验、免费检测、一对一维修服务、检测免费,修不好…

c语言用while和if颠倒整数,【连载】(循环执行语句while和if)乐创DIY C语言讲义​——3.8节(3)...

2 循环执行语句计算机有一个强大的能力,快速地重复执行某一计算,这种重复计算多次的方法,是通过软件中的循环执行语句去实现的。C语言中实现循环语句结构的方式有三种,第一种为“for”循环,第二种为“while”循环&…

怎样查看电脑系统版本_用什么软件查维修记录 思域HATCHBACK怎样查询维保记录_汽车事故车查询...

请点击上方快速关注思域HATCHBACK很火。这款被誉为“国产Type R”的思域HATCHBACK版本在三厢车的基础上,集成了更运动化乃至更具战斗感的套件包围、中置排气和手动变速箱。对于本田粉、改装粉、操控粉们而言,“C位客信仰落地”的名言,就像是火…

安卓4.4.4安装哪个微信版本_??微信又更新!暗黑模式可独立设置,新增群接龙固定入口...

前段时间微信支持设置暗黑模式引起了大众的关注,但有小伙伴表示:为啥微信不能单独设置,要随系统变化?这下好了,微信安卓版发布7.0.15内测版本,私信「安卓内测版」即可获取。可以看到,本次内测更…

某系统有6台输出设备 有多个进程均需要使用2台_系统设计硬核知识(4)——操作系统的设备管理...

在计算机系统中,除了处理器和内存之外,其他的大部分硬设备称为外部设备。它包括输入/输出设备,辅存设备及终端设备等。这些设备种类繁多,特性各异,操作方式的差异很大,从而使操作系统的设备管理变得十分繁杂…

esp8266单片机透传_基于WeMos D1(ESP8266)的校园卡门禁系统

刷卡https://www.zhihu.com/video/1107591334902345728电脑端控制https://www.zhihu.com/video/1107591363079733248手机端控制https://www.zhihu.com/video/1107591388040052736一、项目背景随着网络技术和嵌入式技术的发展,物联网开始引领新一波热潮。制作这个项目…