字符转数值本质是查编码表,即根据ASCII、UTF-8等标准获取字符对应码点值;ASCII中'A'→65、'0'→48,非ASCII字符需依赖Unicode解码,如'中'为20013;注意单字符与字符串区别及常见误区。

字符转数值,本质是查编码表——每个字符对应一个整数,这个整数就是它在当前编码标准(如 ASCII、UTF-8)中的码点值。
ASCII 字符直接转整数
ASCII 是最基础的编码,共 128 个字符(0–127),大小写字母、数字、常用符号都一一对应固定数值。在大多数编程语言中,字符类型(char)可隐式或显式转为整数类型。
- C/C++/Java:直接赋值或强制转换,例如 'A' → 65,'0' → 48
- Python:用 ord() 函数,ord('A') 返回 65
- JavaScript:用 charCodeAt(0),'A'.charCodeAt(0) 得 65
非 ASCII 字符需明确编码上下文
中文、 emoji、带重音的字母等超出了 ASCII 范围,它们的数值取决于所用编码。UTF-8 是主流,但它对不同字符使用 1–4 字节编码,单个 char 变量无法直接表示这类字符(尤其在 C 风格语言中)。
- UTF-8 中,'中' 编码为三个字节 0xE4 0xB8 0xAD,没有“单个 char 对应一个数值”的简单映射
- 若要获取 Unicode 码点(如 U+4E2D),需先解码 UTF-8 字节流,再得到 20013(十进制)
- Python 的 ord('中') 直接返回 20013,因为它内部按 Unicode 处理;而 C 里需用宽字符(wchar_t)或 UTF-8 解码库
注意字符与字符串的边界
单引号包裹的是字符字面量(如 'x'),双引号是字符串(如 "x")。对字符串取数值需先取首字符。
- 错误写法:'hello'(多数语言不合法,字符字面量只允许一个字符)
- 正确做法:取字符串第一个字符再转换,如 Python 中 ord("你好"[0]) → 20320(‘你’的 Unicode 码点)
- C 语言中,"abc"[0] 是字符 'a',可安全转为 97
常见误区提醒
字符转数值不是“计算”,而是查表;别混淆字符值与显示形状、字体、渲染效果。
- '1' 是字符,值为 49;数字 1 是整数,二者类型和用途不同
- 大小写差 32('a'−'A' = 97−65 = 32),这是 ASCII 规律,但不适用于 Unicode 全集
- 空格字符 ' ' 的 ASCII 值是 32,常被忽略却高频出现

















