二进制编码

字符编码笔记:ASCII,Unicode和UTF-8

。_饼干妹妹 提交于 2020-02-12 05:27:57
这家伙说的通俗易懂,只是在谈到UTF-8 “它可以使用1~4个字节表示一个符号”有问题。 作者:阮一峰 来源:阮一峰的网络日志 下面就是我的笔记,主要用来整理自己的思路。但是,我尽量试图写得通俗易懂,希望能对其他朋友有用。毕竟,字符编码是计算机技术的基石,想要熟练使用计算机,就必须懂得一点字符编码的知识。 1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从0000000到11111111。 上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为ASCII码,一直沿用至今。 ASCII码一共规定了128个字符的编码,比如空格“SPACE”是32(二进制00100000),大写的字母A是65(二进制01000001)。这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的1位统一规定为0。 2、非ASCII编码 英语用128个符号编码就够了,但是用来表示其他语言,128个符号是不够的。比如,在法语中,字母上方有注音符号,它就无法用ASCII码表示。于是

字符编码ASCII, Unicode和UTF-8

房东的猫 提交于 2020-02-12 05:26:50
字符编码是计算机技术的基石,想要熟练使用计算机,就必须懂得一点字符编码的知识。 1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从0000000到11111111。 上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为ASCII码,一直沿用至今。 ASCII码一共规定了128个字符的编码,比如空格”SPACE”是32(二进制00100000),大写的字母A是65(二进制01000001)。这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的1位统一规定为0。 2、非ASCII编码 英语用128个符号编码就够了,但是用来表示其他语言,128个符号是不够的。比如,在法语中,字母上方有注音符号,它就无法用ASCII码表示。于是,一些欧洲国家就决定,利用字节中闲置的最高位编入新的符号。比如,法语中的é的编码为130(二进制10000010)。这样一来,这些欧洲国家使用的编码体系,可以表示最多256个符号。 但是,这里又出现了新的问题。不同的国家有不同的字母,因此

Unicode 和 UTF-8 之间的关系

可紊 提交于 2020-02-12 05:19:31
今天中午,我突然想搞清楚 Unicode 和 UTF-8 之间的关系,就开始查资料。 这个问题比我想象的复杂,午饭后一直看到晚上9点,才算初步搞清楚。 下面就是我的笔记,主要用来整理自己的思路。我尽量写得通俗易懂,希望能对其他朋友有用。毕竟,字符编码是计算机技术的基石,想要熟练使用计算机,就必须懂得一点字符编码的知识。 一、ASCII 码 我们知道,计算机内部,所有信息最终都是一个二进制值。每一个二进制位(bit)有 0 和 1 两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从 00000000 到 11111111 。 上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为 ASCII 码,一直沿用至今。 ASCII 码一共规定了128个字符的编码,比如空格 SPACE 是32(二进制 00100000 ),大写的字母 A 是65(二进制 01000001 )。这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的一位统一规定为 0 。 二、非 ASCII 编码 英语用128个符号编码就够了,但是用来表示其他语言,128个符号是不够的。比如,在法语中,字母上方有注音符号

从零开始学java(12)

与世无争的帅哥 提交于 2020-02-11 23:38:25
Day2 今天了解一下一些常用的命令与基础知识,并且学会使用IDE(Integrated Development Environment集成开发环境),以eclipse为例。 1.DOS常见的命令 1 dir 无参数:查看当前所在目录的文件和文件夹。 /s:查看当前目录及其所有子目录的文件和文件夹。 /a:查看包括隐含文件的所有文件。 /ah:只显示出隐含文件。 /w:以紧凑方式(一行显示5个文件)显示文件和文件夹。 /p:以分页方式(显示一页之后会自动暂停)显示。 |more:前面那个符号是“\”上面的那个,叫做重定向符号,就是把一个命令的结果输出为另外一个命令的参数。more也是一个命令,dir /w |more 得到的结果和dir /w /p的结果是一样的。 其他的参数大家可以用:dir/?查看。 2 cd cd 目录名:进入特定的目录。如果看到有个目录显示为:abcdef ghi 就 输入:cd abcdef.ghi进入该目录。 cd\ 退回到根目录。 cd…退回到上一级目录。 3 md rd md 目录名:建立特定的文件夹。 (dos下面习惯叫目录,win下面习惯叫文件夹。) rd 目录名:删除特定的文件夹。 4 cls 清除屏幕。 清除屏幕上所有的显示内容,只留下CLS命令前的路径 5 copy copy 路径\文件名 路径\文件名 :把一个文件拷贝到另一个地方。 6

从零开始学java(12)

拜拜、爱过 提交于 2020-02-11 23:31:46
Day2 今天了解一下一些常用的命令与基础知识,并且学会使用IDE(Integrated Development Environment集成开发环境),以eclipse为例。 1.DOS常见的命令 1 dir 无参数:查看当前所在目录的文件和文件夹。 /s:查看当前目录及其所有子目录的文件和文件夹。 /a:查看包括隐含文件的所有文件。 /ah:只显示出隐含文件。 /w:以紧凑方式(一行显示5个文件)显示文件和文件夹。 /p:以分页方式(显示一页之后会自动暂停)显示。 |more:前面那个符号是“\”上面的那个,叫做重定向符号,就是把一个命令的结果输出为另外一个命令的参数。more也是一个命令,dir /w |more 得到的结果和dir /w /p的结果是一样的。 其他的参数大家可以用:dir/?查看。 2 cd cd 目录名:进入特定的目录。如果看到有个目录显示为:abcdef ghi 就 输入:cd abcdef.ghi进入该目录。 cd\ 退回到根目录。 cd…退回到上一级目录。 3 md rd md 目录名:建立特定的文件夹。 (dos下面习惯叫目录,win下面习惯叫文件夹。) rd 目录名:删除特定的文件夹。 4 cls 清除屏幕。 清除屏幕上所有的显示内容,只留下CLS命令前的路径 5 copy copy 路径\文件名 路径\文件名 :把一个文件拷贝到另一个地方。 6

WCF技术剖析之十九:深度剖析消息编码(Encoding)实现(上篇)

淺唱寂寞╮ 提交于 2020-02-08 09:33:07
[爱心链接: 拯救一个25岁身患急性白血病的女孩[内有苏州电视台经济频道《天天山海经》为此录制的节目视频(苏州话)] ]消息作为WCF进行通信的唯一媒介,最终需要通过写入传输层进行传递。而对消息进行传输的一个前提或者是一项必不可少的工作是对消息进行相应的编码。WCF提供了一系列可供选择的编码方式,它们分别在互操作和性能各具优势。在本篇文章我们将对各种编码方式进行消息的讨论。 从互操作性的角度来看,编码方法很大程度上决定了跨平台支持的能力。有的编码方式是平台无关的,有的则仅限于某种特定的平台。WCF提供了3种典型的编码方式:Binary、Text和MTOM。Binrary以二进制的方式进行消息的编码,但是仅限于.NET平台之间的通信;Text则提供平台无关的基于文本的编码方式。MTOM编码基于WS-MTOM规范,对于改善大规模二进制数据在SOAP消息的传输性能具有重大的意义,既然该编码方式遵循相应的规范,无疑这也是一种跨平台的编码方式。 在正式介绍WCF消息编码之前,我们很有必要了解如下几个实现编码的核心对象:XmlDictionary、XmlDictionary和XmlDIctionaryWriter。 一、XmlDictionary XmlDictionary,顾名思义,它是一个字典,它是从事编码和解码双方共享的一份“词汇表”。这样的说法可能有点抽象,我们不妨做一个类比。比如我说

Python解析二进制字节流为字符串(GZIP)

泪湿孤枕 提交于 2020-02-05 09:10:25
原因: 由于做项目需要,试图解析某网站的response过来的文件,一开始以为是GZIP后需要通过GZIP进行一次解压缩,然后上网查了半天用“GZIP解压缩”的方法,各种转编码的方式都失败了。发现自己傻到家的发现,这个文件本来就不是.tar.gz的格式,而是xml的格式。只是存储的方式是二进制流字节的形式。 解决方法 由于传输过来的是二进制字节流的格式,故可以直接采用python的zlib库进行解压即可 import zlib result = zlib.decompress(doc) 来源: CSDN 作者: 汤姆的猫生 链接: https://blog.csdn.net/weixin_40215561/article/details/104134703

计算机中数据的表示

不问归期 提交于 2020-02-05 02:03:27
进位计数制及其转换 在采用进位计数的数字系统中,如果只用R个基本符号(例如0,1,2,…,R-1)表示数值,则称其为R进制,R称为该数制的基数(Radix)。 不同数制度的共同特点: a.每一种数制都有固定的符号集。 b.每一种数制都使用位置表示法。即处于不同位置的数符所代表的值不同,与它所在位置的权值有关。例如,十进制 1234.55可表示为:1234.55=1x10 3 +2x10 2 +3x10 1 +4x10 0 +5x10 -1 +5x10 -2 计算机中常用的进位数制表示 不同进制之间的对照关系 进制间的相互转换 1.R进制转10进制 将R进制按权展开求和即可得相应的十进制数 例如 十六进制转十进制 (234)H= (2x16 2 +3x16 1 +4x16 0 )D =(564)D 八进制转十进制 (234)O= (2×8 2 +3×8 1 +4×8 0 )D = (156)D 二进制转十进制 (10110)B=(1×2 4 +0×2 3 +1×2 2 +1×2 1 +0×2 0 )D =(22)D 2.十进制转R进制 十进制数转换成R进制分为两部分:整数部分和小数部分。 整数部分 可以采用 “除R取余,逆序排列” 法,即将十进制整数部分连续地除以R取余数,直到商为0。 小数部分 转换成R进制数采用 “乘R取整,顺序排列” 法,即将十进制小数不断乘以R取整数

mysql学习笔记--- 字符串函数、日期时间函数

本秂侑毒 提交于 2020-02-01 17:07:59
一、常见字符串函数: 1、CHAR_LENGTH 获取长度(字符为单位) 2、FORMAT 格式化 3、INSERT 替换的方式插入 4、INSTR 获取位置 5、LEFT/RIGHT 取左、取右 6、LENGTH 获取长度(字节为单位) 7、LTRIM/RTRIM/TRIM 去空格(左/右/自定义) 8、STRCMP 字符串比较 9、CONCAT 字符串拼接 10、SUBSTRING 字符串截取 1、 CHAR_LENGTH:获取长度(字符为单位) CHAR_LENGTH() 解释:返回值为字符串str的长度,计算的单位为字符(一个中文也算一个字符) 举例: 如果是查询已知表格里的字段长度,可以这样写: 2、 FORMAT : FORMAT(X,D) 解释:将数字X的格式写为'#,###,###.##',以四舍五入的方式保留小数点后D位,并将结果以字符串的形式返回。若D为0, 则返回结果不带有小数点,或不含小数部分。 举例: 3、 INSERT:替换的方式插入 (,pos,,newstr) 解释:返回字符串str,从原str的pos位置开始,用字符串newstr来替换,替换的长度为len。 如果pos超过字符串长度,则返回值为原始字符串。假如len的长度超过后面字符串的长度,则从位置pos开始替换到字符串的结尾即可。 四个参数中若任何一个参数为的值为null

python中编码问题

生来就可爱ヽ(ⅴ<●) 提交于 2020-01-31 16:26:22
写在前面: 本文是很基础的东西,这些基础的东西有一个特点,看一遍会了,但其中很多精髓其实被忽略了,建议你货比三家,细细品尝编码之美。还有,这文章是我熬夜写的,可能有错,请批判性阅读,谢谢。 0x00:为社么会出现多种编码? 相信计算机专业的都知道,所有的数据(文本,音频,视频等等)在计算机内部都是以二进制形式来表示的。而计算机内部为什么采用二进制则是由硬件决定的(计算机采用了具有两种稳定状态的二值电路)。这样,就引出一个问题: 我们人类不适合直接看二进制。 因此,需要用一种方法,将二进制转为我们能看懂的东西。 编码就应运而生了。 0x01:编码发展历史 第一阶段: 在计算机中,所有的数据只可能是0或者1(用高电平和低电平分别表示1和0),那么我们通常看到的字符也就只能用0和1来表示呀。于是科学家们(这里指的是美国的科学家)就想出一个办法,把一个特定的数字对应一个特定的字母进行存储和传输,比如我需要存储字母a,那么我存入一个数字97(即在计算机中存入二进制(01100001),这个过程叫做编码(encode),而我们在读取数据的时候,当遇到97时,我们就让计算机显示字母a,这个过程叫做解码(decode)。 这里你应该知道: 计算机看懂的东西我们看不懂,我们看懂的东西,计算机看不懂。 把计算机看懂的东西(二进制(01100001))变成我们看懂的东西(数字97,也就是a)