主要关注数字所在的位次,大写字母和小写字母所在的位次
从下标 0 开始,前 48 个都不必理会
-
数字 0-9 的下标是 48-57
-
大写字母是 65-90
-
小写字母是 97-122
注意,数字,大写,小写之间都有特殊字符间隔,并不是连续的,判断是什么字符类型的时候,都需要分开判断
(v.v) ➜ tool git:(main) ✗ go run ascii-unicode.go
十进制 十六进制 ASCII Unicode编码点 Unicode字符
----------------------------------------------------------------
0 0x0 . U+0000 .
1 0x1 . U+0001 .
2 0x2 . U+0002 .
3 0x3 . U+0003 .
4 0x4 . U+0004 .
5 0x5 . U+0005 .
6 0x6 . U+0006 .
7 0x7 . U+0007 .
8 0x8 . U+0008 .
9 0x9 . U+0009 .
10 0xA . U+000A .
11 0xB . U+000B .
12 0xC . U+000C .
13 0xD . U+000D .
14 0xE . U+000E .
15 0xF . U+000F .
----------------------------------------------------------------
16 0x10 . U+0010 .
17 0x11 . U+0011 .
18 0x12 . U+0012 .
19 0x13 . U+0013 .
20 0x14 . U+0014 .
21 0x15 . U+0015 .
22 0x16 . U+0016 .
23 0x17 . U+0017 .
24 0x18 . U+0018 .
25 0x19 . U+0019 .
26 0x1A . U+001A .
27 0x1B . U+001B .
28 0x1C . U+001C .
29 0x1D . U+001D .
30 0x1E . U+001E .
31 0x1F . U+001F .
----------------------------------------------------------------
32 0x20 U+0020
33 0x21 ! U+0021 !
34 0x22 " U+0022 "
35 0x23 # U+0023 #
36 0x24 $ U+0024 $
37 0x25 % U+0025 %
38 0x26 & U+0026 &
39 0x27 ' U+0027 '
40 0x28 ( U+0028 (
41 0x29 ) U+0029 )
42 0x2A * U+002A *
43 0x2B + U+002B +
44 0x2C , U+002C ,
45 0x2D - U+002D -
46 0x2E . U+002E .
47 0x2F / U+002F /
----------------------------------------------------------------
48 0x30 0 U+0030 0
49 0x31 1 U+0031 1
50 0x32 2 U+0032 2
51 0x33 3 U+0033 3
52 0x34 4 U+0034 4
53 0x35 5 U+0035 5
54 0x36 6 U+0036 6
55 0x37 7 U+0037 7
56 0x38 8 U+0038 8
57 0x39 9 U+0039 9
58 0x3A : U+003A :
59 0x3B ; U+003B ;
60 0x3C < U+003C <
61 0x3D = U+003D =
62 0x3E > U+003E >
63 0x3F ? U+003F ?
----------------------------------------------------------------
64 0x40 @ U+0040 @
65 0x41 A U+0041 A
66 0x42 B U+0042 B
67 0x43 C U+0043 C
68 0x44 D U+0044 D
69 0x45 E U+0045 E
70 0x46 F U+0046 F
71 0x47 G U+0047 G
72 0x48 H U+0048 H
73 0x49 I U+0049 I
74 0x4A J U+004A J
75 0x4B K U+004B K
76 0x4C L U+004C L
77 0x4D M U+004D M
78 0x4E N U+004E N
79 0x4F O U+004F O
----------------------------------------------------------------
80 0x50 P U+0050 P
81 0x51 Q U+0051 Q
82 0x52 R U+0052 R
83 0x53 S U+0053 S
84 0x54 T U+0054 T
85 0x55 U U+0055 U
86 0x56 V U+0056 V
87 0x57 W U+0057 W
88 0x58 X U+0058 X
89 0x59 Y U+0059 Y
90 0x5A Z U+005A Z
91 0x5B [ U+005B [
92 0x5C \ U+005C \
93 0x5D ] U+005D ]
94 0x5E ^ U+005E ^
95 0x5F _ U+005F _
----------------------------------------------------------------
96 0x60 ` U+0060 `
97 0x61 a U+0061 a
98 0x62 b U+0062 b
99 0x63 c U+0063 c
100 0x64 d U+0064 d
101 0x65 e U+0065 e
102 0x66 f U+0066 f
103 0x67 g U+0067 g
104 0x68 h U+0068 h
105 0x69 i U+0069 i
106 0x6A j U+006A j
107 0x6B k U+006B k
108 0x6C l U+006C l
109 0x6D m U+006D m
110 0x6E n U+006E n
111 0x6F o U+006F o
----------------------------------------------------------------
112 0x70 p U+0070 p
113 0x71 q U+0071 q
114 0x72 r U+0072 r
115 0x73 s U+0073 s
116 0x74 t U+0074 t
117 0x75 u U+0075 u
118 0x76 v U+0076 v
119 0x77 w U+0077 w
120 0x78 x U+0078 x
121 0x79 y U+0079 y
122 0x7A z U+007A z
123 0x7B { U+007B {
124 0x7C | U+007C |
125 0x7D } U+007D }
126 0x7E ~ U+007E ~
127 0x7F . U+007F .
----------------------------------------------------------------
✗ cat ascii-unicode.go
package main
import (
"fmt"
)
func main() {
// 打印表头
fmt.Printf("%-8s %-8s %-8s %-12s %-8s\n", "十进制", "十六进制", "ASCII", "Unicode编码点", "Unicode字符")
fmt.Println("----------------------------------------------------------------")
// 输出标准ASCII字符表 (0-127)
for i := 0; i <= 127; i++ {
// 控制字符通常不可打印,用点号表示
var asciiChar string
if i >= 32 && i <= 126 { // 可打印字符范围
asciiChar = string(rune(i))
} else {
asciiChar = "."
}
// 获取Unicode编码点和字符
r := rune(i)
unicodePoint := fmt.Sprintf("U+%04X", i)
// 构建Unicode字符的字符串表示
var unicodeChar string
if i >= 32 && i <= 126 {
unicodeChar = string(r)
} else {
unicodeChar = "."
}
// 打印行
fmt.Printf("%-8d 0x%-6X %-8s %-12s %-8s\n", i, i, asciiChar, unicodePoint, unicodeChar)
// 每16个字符后添加分隔线
if (i+1)%16 == 0 {
fmt.Println("----------------------------------------------------------------")
}
}
}