化妆品企业网站建设,wordpress justnews下载,网站建设服务上海,江苏核酸检测机构首先 简单说一下历史#xff0c;ascii码最开始是美国人搞出来的#xff0c;用来干什么呢#xff1f;我们知道#xff0c;计算机只知道0和1#xff0c;如果我们要计算机识别除了01之外的字符#xff0c;例如 a#xff0c;我们要先告诉计算机‘1100001’就是a。跟摩斯密码…首先 简单说一下历史ascii码最开始是美国人搞出来的用来干什么呢我们知道计算机只知道0和1如果我们要计算机识别除了01之外的字符例如 a我们要先告诉计算机‘1100001’就是a。跟摩斯密码一样敲几下三长两短就是代表sos(开玩笑)。所谓的字符编码就是跟计算机打交 道跟计算机约定一连串的0101到底代表了什么字符。ascii编码是鼻祖了不过由于ascii只有8bits而且实际上用到的是7位所以能表示的只有128个字符(00000000~01111111)。这128个字符包括了可打印的普通字符也包括了不可打印的命令字符。看下表。这128个字符对于美国人来说应该是足够了。但对于一些使用非英文字符的国家地区例如拉丁文发文俄文中文这就绝对不够。所以后来就有人搞了扩展的ascii也有人搞了新的字符编码在原来的8位基础上扩展到16位32位。我们常见的ISOxxxxGB2312GBKBIG 5unicode....都是后来发展起来的。虽然这 些字符编码有些之间是不兼容例如就中文而言gb2312是不兼容unicode的就是说同一个汉字底层约定的二进制是不一样的。网页上的乱码就 是出于此。但是这些后来发展的字符编码都向下兼容了ascii。这就是为什么utf-8(unicode)和gbk/gb2312显示英文是不会有乱码 而显示中文会容易乱码。因为他们都兼容ascii所以52个字母的显示都是按ascii标准。但ascii是没中文的所以unicodegbk都按 各自标准解释了。从简单入手我们先来看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二进制字符串注意一定要记清楚十六进制是0xddechochr(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);?注意上面的这些转换函数由于都是数学处理函数所以参数都不需要是字符串形式(不需要加引号)直接写数值就行了。