• 【字符编码系列一】ASCII编码是什么?


    介绍 

           ASCII 编码于 1967 年第一次发布,最后一次更新是在 1986 年,迄今为止共收录了 128 个字符,包含了基本的拉丁字母(英文字母)、阿拉伯数字(也就是 1234567890)、标点符号(,.!等)、特殊符号(@#$%^&等)以及一些具有控制功能的字符(回车空格之类的)。

            ascii编码共收录了 128 个字符,用一个字节就可以存储,他的首字节是0.

            后续又更新了扩展ascii,将其扩展到了255个字符,也就是将首字节1也用上了。我们常见得GBK等兼容ascii码都是指的前128个字符。

            ASCII 码的十进制范围为 [0-255],包括 [0-31] 为控制字符或通信专用字符,[32-127] 为可打印字符,[128-255] 为扩展的 ASCII 码。

    示例描述

            在硬件中,通过高电平和低电平区分信号,对应着二进制中的0和1.

            一个字节有8位,每位都是0或1.

            这里面的每位是我们熟知的bit,8bit构成了1byte,1024byte就扣成了1KB,1024KB就构成了1MB

            ascii码就是1字节可以存储表示的字符

            如:字符0的二进制形式 0000 0000

            8位的二进制,最多可以表示256个字符,即十进制中的0~255。在ascii中(无扩展),首位为0不为1,所以只能表示128个数

            接下来会用16进制来表示,因为在后续使用中我们要将这个字符显示出来时,使用16进制更容易计算如何在字库中查找字符。二进制中每4位可以转换成一个16进制

            比如 0010 0101中前四位0010,用每位分别×8/4/2/1相加得到的就是第一位16进制。 即0x8+0x4+1x2+0x1=2。

    同理后4位转换:0x8+1x4+0x2+1x1=5

            将这两个数组合起来就是0x25(签名添加0x来和十进制表示方式做区分),这个值在ascii中代表了百分号%,如下表所示

    DEC 十进制

    OCT 八进制

    HEX 十六进制

    BIN 二进制

    Symbol

    HTML Number

    HTML Name

    Description

    中文描述

    37

    045

    0x25

    00100101

    %

    %

    Per cent sign

    百分号

            十六进制单数的范围是0~F即0~9,A,B,C,D,E,F其中0~9即十进制中的0~9,超过9之后用字母表示,A~F代表十进制中的10~15

            例如,在C++中用16进制数赋值一个单字节字符串char并打印,终端中显示出了该16进制代表的字符 ‘!’。因为ascii只用一个字节就可以表示 

    1. #include
    2. int main()
    3. {
    4. const char ascii = 0x21;
    5. std::cout << ascii;
    6. system("pause");
    7. }

            该程序运行结果:

             由于ascii编码只收录了一些阿拉伯数字、英文字符等,他并不能展示汉字、汉语、日文等等其他的文字,所以后续各国效仿开发自己的字符编码,例如 ISO/IEC 8859(欧洲字符集)、shift_Jis(日语字符集)、GBK(中文字符集)等,也经过了几个版本迭代。如GB2312-》GBK-》GB18030等,下一篇文章将讲述GB2312

    附:ascii编码表

    二进制

    十进制

    十六进制

    字符/缩写

    解释

    00000000

    0

    00

    NUL (NULL)

    空字符

    00000001

    1

    01

    SOH (Start Of Headling)

    标题开始

    00000010

    2

    02

    STX (Start Of Text)

    正文开始

    00000011

    3

    03

    ETX (End Of Text)

    正文结束

    00000100

    4

    04

    EOT (End Of Transmission)

    传输结束

    00000101

    5

    05

    ENQ (Enquiry)

    请求

    00000110

    6

    06

    ACK (Acknowledge)

    回应/响应/收到通知

    00000111

    7

    07

    BEL (Bell)

    响铃

    00001000

    8

    08

    BS (Backspace)

    退格

    00001001

    9

    09

    HT (Horizontal Tab)

    水平制表符

    00001010

    10

    0A

    LF/NL(Line Feed/New Line)

    换行键

    00001011

    11

    0B

    VT (Vertical Tab)

    垂直制表符

    00001100

    12

    0C

    FF/NP (Form Feed/New Page)

    换页键

    00001101

    13

    0D

    CR (Carriage Return)

    回车键

    00001110

    14

    0E

    SO (Shift Out)

    不用切换

    00001111

    15

    0F

    SI (Shift In)

    启用切换

    00010000

    16

    10

    DLE (Data Link Escape)

    数据链路转义

    00010001

    17

    11

    DC1/XON
    (Device Control 1/Transmission On)

    设备控制1/传输开始

    00010010

    18

    12

    DC2 (Device Control 2)

    设备控制2

    00010011

    19

    13

    DC3/XOFF
    (Device Control 3/Transmission Off)

    设备控制3/传输中断

    00010100

    20

    14

    DC4 (Device Control 4)

    设备控制4

    00010101

    21

    15

    NAK (Negative Acknowledge)

    无响应/非正常响应/拒绝接收

    00010110

    22

    16

    SYN (Synchronous Idle)

    同步空闲

    00010111

    23

    17

    ETB (End of Transmission Block)

    传输块结束/块传输终止

    00011000

    24

    18

    CAN (Cancel)

    取消

    00011001

    25

    19

    EM (End of Medium)

    已到介质末端/介质存储已满/介质中断

    00011010

    26

    1A

    SUB (Substitute)

    替补/替换

    00011011

    27

    1B

    ESC (Escape)

    逃离/取消

    00011100

    28

    1C

    FS (File Separator)

    文件分割符

    00011101

    29

    1D

    GS (Group Separator)

    组分隔符/分组符

    00011110

    30

    1E

    RS (Record Separator)

    记录分离符

    00011111

    31

    1F

    US (Unit Separator)

    单元分隔符

    00100000

    32

    20

    (Space)

    空格

    00100001

    33

    21

    !

    00100010

    34

    22

    "

    00100011

    35

    23

    #

    00100100

    36

    24

    $

    00100101

    37

    25

    %

    00100110

    38

    26

    &

    00100111

    39

    27

    '

    00101000

    40

    28

    (

    00101001

    41

    29

    )

    00101010

    42

    2A

    *

    00101011

    43

    2B

    +

    00101100

    44

    2C

    ,

    00101101

    45

    2D

    -

    00101110

    46

    2E

    .

    00101111

    47

    2F

    /

    00110000

    48

    30

    0

    00110001

    49

    31

    1

    00110010

    50

    32

    2

    00110011

    51

    33

    3

    00110100

    52

    34

    4

    00110101

    53

    35

    5

    00110110

    54

    36

    6

    00110111

    55

    37

    7

    00111000

    56

    38

    8

    00111001

    57

    39

    9

    00111010

    58

    3A

    :

    00111011

    59

    3B

    ;

    00111100

    60

    3C

    <

    00111101

    61

    3D

    =

    00111110

    62

    3E

    >

    00111111

    63

    3F

    ?

    01000000

    64

    40

    @

    01000001

    65

    41

    A

    01000010

    66

    42

    B

    01000011

    67

    43

    C

    01000100

    68

    44

    D

    01000101

    69

    45

    E

    01000110

    70

    46

    F

    01000111

    71

    47

    G

    01001000

    72

    48

    H

    01001001

    73

    49

    I

    01001010

    74

    4A

    J

    01001011

    75

    4B

    K

    01001100

    76

    4C

    L

    01001101

    77

    4D

    M

    01001110

    78

    4E

    N

    01001111

    79

    4F

    O

    01010000

    80

    50

    P

    01010001

    81

    51

    Q

    01010010

    82

    52

    R

    01010011

    83

    53

    S

    01010100

    84

    54

    T

    01010101

    85

    55

    U

    01010110

    86

    56

    V

    01010111

    87

    57

    W

    01011000

    88

    58

    X

    01011001

    89

    59

    Y

    01011010

    90

    5A

    Z

    01011011

    91

    5B

    [

    01011100

    92

    5C

    \

    01011101

    93

    5D

    ]

    01011110

    94

    5E

    ^

    01011111

    95

    5F

    _

    01100000

    96

    60

    `

    01100001

    97

    61

    a

    01100010

    98

    62

    b

    01100011

    99

    63

    c

    01100100

    100

    64

    d

    01100101

    101

    65

    e

    01100110

    102

    66

    f

    01100111

    103

    67

    g

    01101000

    104

    68

    h

    01101001

    105

    69

    i

    01101010

    106

    6A

    j

    01101011

    107

    6B

    k

    01101100

    108

    6C

    l

    01101101

    109

    6D

    m

    01101110

    110

    6E

    n

    01101111

    111

    6F

    o

    01110000

    112

    70

    p

    01110001

    113

    71

    q

    01110010

    114

    72

    r

    01110011

    115

    73

    s

    01110100

    116

    74

    t

    01110101

    117

    75

    u

    01110110

    118

    76

    v

    01110111

    119

    77

    w

    01111000

    120

    78

    x

    01111001

    121

    79

    y

    01111010

    122

    7A

    z

    01111011

    123

    7B

    {

    01111100

    124

    7C

    |

    01111101

    125

    7D

    }

    01111110

    126

    7E

    ~

    01111111

    127

    7F

    DEL (Delete)

    删除

    表格来自C语言中文网:ASCII码一览表,ASCII码对照表 (biancheng.net)

    参考资料:

    也可以在这个网站查询,收录了很多常见的编码表

    ASCII码一览表,ASCII码对照表

  • 相关阅读:
    【数据结构】哈希表
    月薪5万以上的项目经理都达到了哪些标准?
    阿里云服务器 手动搭建WordPress(CentOS 8)
    vue3+vite+ts使用monaco-editor编辑器
    多肽标签TC tag,H2N-CCPGCC-OH
    c# 将excel导入 sqlite
    QT:可执行文件打包
    Android 包体积优化(未完成)
    【cmake】彻底弄懂cmake中的可见性/传递性 INTEFACE 问题
    jq弹窗拖动改变宽高
  • 原文地址:https://blog.csdn.net/Flywithdawn/article/details/134467145