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光盘…

windows上配置nginx php,Windows下配置Nginx使之支持PHP

1. 首先,将 nginx.conf 中的 PHP 配置注释去掉。01# pass the PHP scripts to FastCGI server listening on 127.0.0.1:900002#03#location ~ .php$ {04# root html;05# fastcgi_pass 127.0.0.1:9000;06# fastcgi_index index.php;07# fas…

php 系统环境变量引用,PHP 系统变量 环境变量

在PHP网站开发中,为了满足网站的需要,时常需要对PHP环境变量进行设置和应用,在虚拟主机环境下,有时我们更需要通过PHP环境变量操作函 数来对PHP环境变量值进行设置。为此我们有必要对PHP环境变量先有所熟悉。今天和大家分享PHP环境…

python dataframe分组求和,pandas datafram中按特定月份分组和求和值

这里有一个稍微不同的方法:使用year和month来构建索引,然后使用一个UDF groupby()。在示例数据:N 10years pd.date_range("1981", "2017", freq"A").yeardates np.random.choice(years, sizeN, replaceTrue…

matlab7.0 run,新手求救啊!!!matlab7.0在win7启动后命令窗口出现大段代码!

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼java.lang.NoClassDefFoundError: com/mathworks/beans/ExtraPropertyAttributesat java.lang.ClassLoader.defineClass0(Native Method)at java.lang.ClassLoader.defineClass(Unknown Source)at java.security.SecureClassLoader…

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) {//测试内…

php用json_encode编码后乱码,php json_encode()函数中文编码乱码解决方法_PHP教程

在我使用php json_encode()时,如果是英文或数字没一点问题,但是用到中文是居然出现不可识别的中文乱码了,下面看我解决json_encode中文乱码方法。在网上找到一种解决方法:代码如下复制代码后来请教了别人,还可以用base…

oracle 根据用户备份,Oracle基于用户的备份及恢复

要执行exp或imp命令,首先: 1.看Oracle安装目录的bin目录下有没有 exp.exe和 imp.exe这两个文件,要不然可能无法执行这个命令的要执行exp或imp命令,首先:1.看Oracle安装目录的bin目录下有没有 exp.exe和 imp.exe这两个文…

oracle数据库sql的执行过程,Oracle体系结构之SQL语句的执行过程

一般来说,数据库处理SQL都会经过三个过程:解析(parse)、执行(exec)、返回结果(fetch)1.解析当用户发起一个SQL语句时,Oracle通过Server Process 接收SQL语句到达oracle实例,并在Shared pool 中的 Library Cache 查找是否存在该语句对应执行计划的缓存。如…

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:…

oracle脱机什么意思,脱机的是什么意思

1. 或者是,将记录传送到脱机系统去处理,以降低交换机的负荷。Alternatively, the records can be transferred to an off-line system for processing, to reduce the load on the exchange.2. 虽然第三方可用的应用软件很少,但在 Windows 1.…

oracle adg 备份,Oracle Physical Dataguard环境使用RMAN备份和恢复

Oracle Physical Dataguard环境使用RMAN备份和恢复由于Physical Dataguard使用的是块恢复技术来保持和PRIMARY的一致性,因此可以在STANDBY上进行rman备份,从而减轻PRIMARY的压力.当PRIMARY出现数据库故障时,可以使用在STANDBY上的备份来进行恢…

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≯≯≯≯≯≯≯弓晋丽 .程…

oracle 测试库搭建,Oracle Study之--通过RMAN克隆测试库

Oracle Study之--通过RMAN克隆测试库通过使用数据库备份,DBA可以在同一服务器或其它服务器上建立副本数据库。这个副本数据库可以和主数据库有相同的名称(拷贝)或与主数据库名称不同(克隆)。ORACLE在数据库拷贝和数据库克隆之间惟一不同的是拷贝的数据库不能更改名称…

清空临时表oracle,【Oracle相关】Oracle中如何清空临时表空间

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼【问题】数据库临时表空间占用空间太大,暂用大量磁盘空间。【处理】清空临时表空间Oracle1.启动数据库 startup2.查看当前的数据库默认表空间:SQL>select * from database_properties whereproperty_name…

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

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

linux 内存规划,生产场景怎么对linux系统进行合理规划分区?

分区的根本原则是简单、易用、方便批量管理。根据服务器角色定位建议如下:①单机服务器:如8G内存,300G硬盘分区: /boot 100-200M,swap 16G,内存大小8G*2,/ 80G,/var 20G(也可不分)&a…

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

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