• ASCII码(转)


      ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。

      在计算机中,所有的数据在存储和运算时都要使用二进制数表示(因为计算机用高电平和低电平分别表示1和0),例如,像a、b、c、d这样的52个字母(包括大写)、以及0、1等数字还有一些常用的符号(例如*、#、@等)在计算机中存储时也要使用二进制数来表示,而具体用哪些二进制数字表示哪个符号,当然每个人都可以约定自己的一套(这就叫编码),而大家如果要想互相通信而不造成混乱,那么大家就必须使用相同的编码规则,于是美国有关的标准化组织就出台了ASCII编码,统一规定了上述常用符号用哪些二进制数来表示。

    一、背景
    人们发明了计算机,并知道如何使用内存中的0101来表示数和机器码。但是人类最主要的信息展现形式是文本,如何用内存中的bit来表示文本一直困扰着人们,这种情况一直持续到ASCII码发明成功后才被“部分”解决。说白了ASCII码就是解决了一个以数字形式表示文本的问题。

     二、ASCII码通讯
    利用ASCII码作为通讯方式到底是一种什么样的通讯方式呢?(FTP协议中有两种通讯方式,其中一种是ASCII码方式,即文本方式)这里也举例说明:比如我们要传送数值123, 123数值用16进制表示为0x7b,以二进制表示为01111011,那么以二进制方式通讯,01111011就是我们真实传送的数据,但是如果以ASCII码方式通讯,则完全不同了,如果你还传送01111011的话,对方那边的得到的将是'{'('{'对应的ASCII码用16进制表示为7b)。那么我们该如何怎么传呢?正确的方式就是将123每位上的数字转化为其相应的ASCII码,然后传送。这里'1'、'2'和'3'对应的ASCII码用16进制表示分别为0x31、0x32和0x33。这样组合起来后要传送的数据应为"001100010011001000110011"。

    三、总结
    一个字符串在内存中就是按照逐个字符的ASCII码连续存放的,我们在传送字符串时一般无需做特殊转换。
     
    为了便于查询,以下列出ASCII码表:常用ASCII 码对照表  
     
    ASCII, American Standard Code for Information Interchange 念起来像是 "阿斯key",定义从 0 到 127 的一百二十八个数字所代表的英文字母或一样的结果与意义。由于只使用7个位元(bit)就可以表示从0到127的数字,大部分的电脑都使用8个位元来存取字元集(character set),所以从128到255之间的数字可以用来代表另一组一百二十八个符号,称为 extended ASCII。s
    ASCII码 键盘 ASCII 码 键盘 ASCII码 键盘 ASCII 码 键盘
    27 ESC 32 SPACE 33 ! 34 "
    35 # 36 $ 37 % 38 &
    39 ' 40 ( 41 ) 42 *
    43 + 44 ' 45 - 46 .
    47 / 48 0 49 1 50 2
    51 3 52 4 53 5 54 6
    55 7 56 8 57 9 58 :
    59 ; 60 < 61 = 62 >
    63 ? 64 @ 65 A 66 B
    67 C 68 D 69 E 70 F
    71 G 72 H 73 I 74 J
    75 K 76 L 77 M 78 N
    79 O 80 P 81 Q 82 R
    83 S 84 T 85 U 86 V
    87 W 88 X 89 Y 90 Z
    91 [ 92 93 ] 94 ^
    95 _ 96 ` 97 a 98 b
    99 c 100 d 101 e 102 f
    103 g 104 h 105 i 106 j
    107 k 108 l 109 m 110 n
    111 o 112 p 113 q 114 r
    115 s 116 t 117 u 118 v
    119 w 120 x 121 y 122 z
    123 { 124 | 125 } 126 ~
      
      ASCII码有7位码和8位码两种形式。  

      因为1位二进制数可以表示(21=)2种状态:0、1;而2位二进制数可以表示(22)=4种状态:00、01、10、11;依次类推,7位二进制数可以表示(27=)128种状态,每种状态都唯一地编为一个7位的二进制码,对应一个字符(或控制码),这些码可以排列成一个十进制序号0~127。所以,7位ASCII码是用七位二进制数进行编码的,可以表示128个字符。  

      第0~32号及第127号(共34个)是控制字符或通讯专用字符,如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BEL(振铃)等;通讯专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等; 

      第33~126号(共94个)是字符,其中第48~57号为0~9十个阿拉伯数字;65~90号为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。  

      注意:在计算机的存储单元中,一个ASCII码值占一个字节(8个二进制位),其最高位(b7)用作奇偶校验位。所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。奇校验规定:正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位b7添1;偶校验规定:正确的代码一个字节中1的个数必须是偶数,若非偶数,则在最高位b7添1。
     
    转自 http://blog.sina.com.cn/s/blog_704872a501013sqv.html
  • 相关阅读:
    求解大于或等于某个4字节正整数的最小2次幂
    C++17 std::optional
    C++主动调用析构函数
    std::raise()
    C++ std::integral_constant
    C++ range-v3库的安装与测试[Utunbu 18.04]
    python将YUV420P文件转PNG图片格式
    python将两张图片横向或者纵向合成一张
    folly库之Benchmark.h
    Facebook的folly库在Utunbu上的编译
  • 原文地址:https://www.cnblogs.com/whytohow/p/4756066.html
Copyright © 2020-2023  润新知