[TOC]

0x00 前言

描述:上个世纪60年代美国制定了一套字符编码,它就是ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。
它是现今最通用的单字节编码系统(第一个计算机领域通用的字符集),并等同于国际标准 ISO/IEC 646

标准 ASCII 字符表使用 7 位二进制数来表示所有的大写和小写字母,数字0到9,标点符号,以及在美式英语中使用的特殊控制字符等共有128个字符,它主要用于显示现代英语。

关键点: ASCII码中大写与小写转换的位关系值得记录(重点)。
大写字母对应的 ASCII 值第 6 位置 1 则变成对应的小写字母,反之亦然。
例如:大写字母 A 的二进制 ASCII 值是 0100 0001,对应的小写字母 a 的二进制则是 0110 0001
此规则适用于所有大小写字母的相互转换(学到位操作符的时候,很有用)


0x01 ASCII字符表

在 Linux 系统上如何快速查看 ASCII 字符表:

1
man ascii #<!--最小版本安装的可以字节安装man与ascii-->

WeiyiGeek.

WeiyiGeek.


十六进制转换表(Hexadecimal->Ascii),学习逆向的时候您是逃不掉这个得!
例如:1的hex的Ascll为0x31

WeiyiGeek.

WeiyiGeek.


Bin-Octal-Dec-Hex相互转换ASCLL

  • ~~其中,ASCII 字符表上的数字 0~31 以及 127(共 33 个)分配给了控制字符,用于控制像打印机等一些外围设备:( 不可见 )
  • ASCII 字符表上的数字 32~126 分配给了能在键盘上找到的字符,当您查看或打印文档时就会出现:(可见)~~
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    二进制	八进制	十进制	十六进制	缩写/字符	解释
    00000000 0 0 0 NUL(null) 空字符
    00000001 1 1 1 SOH(start of headling) 标题开始
    00000010 2 2 2 STX (start of text) 正文开始
    00000011 3 3 3 ETX (end of text) 正文结束
    00000100 4 4 4 EOT (end of transmission) 传输结束
    00000101 5 5 5 ENQ (enquiry) 请求
    00000110 6 6 6 ACK (acknowledge) 收到通知
    00000111 7 7 7 BEL (bell) 响铃
    00001000 10 8 8 BS (backspace) 退格
    00001001 11 9 9 HT (horizontal tab) 水平制表符
    00001010 12 10 0A LF (NL line feed, new line) 换行键
    00001011 13 11 0B VT (vertical tab) 垂直制表符
    00001100 14 12 0C FF (NP form feed, new page) 换页键
    00001101 15 13 0D CR (carriage return) 回车键
    00001110 16 14 0E SO (shift out) 不用切换
    00001111 17 15 0F SI (shift in) 启用切换
    00010000 20 16 10 DLE (data link escape) 数据链路转义
    00010001 21 17 11 DC1 (device control 1) 设备控制1
    00010010 22 18 12 DC2 (device control 2) 设备控制2
    00010011 23 19 13 DC3 (device control 3) 设备控制3
    00010100 24 20 14 DC4 (device control 4) 设备控制4
    00010101 25 21 15 NAK (negative acknowledge) 拒绝接收
    00010110 26 22 16 SYN (synchronous idle) 同步空闲
    00010111 27 23 17 ETB (end of trans. block) 传输块结束
    00011000 30 24 18 CAN (cancel) 取消
    00011001 31 25 19 EM (end of medium) 介质中断
    00011010 32 26 1A SUB (substitute) 替补
    00011011 33 27 1B ESC (escape) 溢出
    00011100 34 28 1C FS (file separator) 文件分割符
    00011101 35 29 1D GS (group separator) 分组符
    00011110 36 30 1E RS (record separator) 记录分离符
    00011111 37 31 1F US (unit separator) 单元分隔符
    00100000 40 32 20 (space) 空格
    00100001 41 33 21 !
    00100010 42 34 22 "
    00100011 43 35 23 #
    00100100 44 36 24 $
    00100101 45 37 25 %
    00100110 46 38 26 &
    00100111 47 39 27 '
    00101000 50 40 28 (
    00101001 51 41 29 )
    00101010 52 42 2A *
    00101011 53 43 2B +
    00101100 54 44 2C ,
    00101101 55 45 2D -
    00101110 56 46 2E .
    00101111 57 47 2F /
    00110000 60 48 30 0
    00110001 61 49 31 1
    00110010 62 50 32 2
    00110011 63 51 33 3
    00110100 64 52 34 4
    00110101 65 53 35 5
    00110110 66 54 36 6
    00110111 67 55 37 7
    00111000 70 56 38 8
    00111001 71 57 39 9
    00111010 72 58 3A :
    00111011 73 59 3B ;
    00111100 74 60 3C <
    00111101 75 61 3D =
    00111110 76 62 3E >
    00111111 77 63 3F ?
    01000000 100 64 40 @
    01000001 101 65 41 A
    01000010 102 66 42 B
    01000011 103 67 43 C
    01000100 104 68 44 D
    01000101 105 69 45 E
    01000110 106 70 46 F
    01000111 107 71 47 G
    01001000 110 72 48 H
    01001001 111 73 49 I
    01001010 112 74 4A J
    01001011 113 75 4B K
    01001100 114 76 4C L
    01001101 115 77 4D M
    01001110 116 78 4E N
    01001111 117 79 4F O
    01010000 120 80 50 P
    01010001 121 81 51 Q
    01010010 122 82 52 R
    01010011 123 83 53 S
    01010100 124 84 54 T
    01010101 125 85 55 U
    01010110 126 86 56 V
    01010111 127 87 57 W
    01011000 130 88 58 X
    01011001 131 89 59 Y
    01011010 132 90 5A Z
    01011011 133 91 5B [
    01011100 134 92 5C \
    01011101 135 93 5D ]
    01011110 136 94 5E ^
    01011111 137 95 5F _
    01100000 140 96 60 `
    01100001 141 97 61 a
    01100010 142 98 62 b
    01100011 143 99 63 c
    01100100 144 100 64 d
    01100101 145 101 65 e
    01100110 146 102 66 f
    01100111 147 103 67 g
    01101000 150 104 68 h
    01101001 151 105 69 i
    01101010 152 106 6A j
    01101011 153 107 6B k
    01101100 154 108 6C l
    01101101 155 109 6D m
    01101110 156 110 6E n
    01101111 157 111 6F o
    01110000 160 112 70 p
    01110001 161 113 71 q
    01110010 162 114 72 r
    01110011 163 115 73 s
    01110100 164 116 74 t
    01110101 165 117 75 u
    01110110 166 118 76 v
    01110111 167 119 77 w
    01111000 170 120 78 x
    01111001 171 121 79 y
    01111010 172 122 7A z
    01111011 173 123 7B {
    01111100 174 124 7C |
    01111101 175 125 7D }
    01111110 176 126 7E ~
    01111111 177 127 7F DEL (delete) 删除


0x02 ASCII转换

  1. javascript
    描述:将字符转成ASCII码,将ASCLL转换成字符串;
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <script type="text/javascript">
    var test =new String("Hello,world!");
    var conStr = "";
    for (var i = 0; i < test.length; i++){
    var str = test.charAt(i) + " >>>> " +test.charCodeAt(i);
    console.log(str); //将字符转成十进制

    conStr += String.fromCharCode(test.charCodeAt(i)); //输出我们输入的字符串
    }
    console.log("Ascii码转字符串:"+conStr);

    //String.fromCharCode(37); //可将ascii的十进制变成字符
    </script>
    WeiyiGeek.

    WeiyiGeek.


  1. C语言
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include <stdio.h>
    //将字符转换成10(D),8(O),16(HEX)将数字转换成Ascii字符.
    int main(void)
    {
    printf("char = %c ,DEC Ascii-num = %d\n",67,'C'); //Dec
    printf("char = %c ,HEX Ascii-num = %d\n",0x30,'0'); //HEX
    printf("char = %c ,OCT Ascii-num = %d\n",070,'8'); //Oct
    return 0;
    }
    WeiyiGeek.

    WeiyiGeek.