文本与十进制互转

把文本的每个字节转换为 0 到 255 之间的十进制数,英文文本得到的就是常见的 ASCII 码;也可以把十进制数列还原为文本。

完全在浏览器中运行,不会上传任何数据。

使用方法

  1. 选择“编码”把文本转换为十进制数,或选择“解码”把数字还原为文本。
  2. 输入或粘贴内容,也可以打开文件,结果会随输入实时更新。
  3. 为数字选择分隔符:空格、逗号或换行。
  4. 复制结果,或将结果下载为文件。

十进制字节值与 ASCII 码

计算机中的每个字符都以一个或多个字节存储,而一个字节就是 0 到 255 之间的数字。本工具把这些数字用普通的十进制写出来。对于英文文本,得到的就是熟悉的 ASCII 码:大写字母是 65 到 90,小写字母是 97 到 122,数字 0 到 9 是 48 到 57,空格是 32。32 以下是控制字符,例如换行符是 10,回车符是 13。

结果与 Python 中 ord() 或 JavaScript 中读取 Uint8Array 得到的数值相同,很适合用来找出字符串里看不见的字符、换行符或字节顺序标记(BOM)。

逐字节转换,而不是一个大数

转换是逐字节进行的:两个字母会得到两个数字,而不是一个整数。ASCII 文本中不会出现大于 127 的值;在 UTF-8 中,这类字节两到四个一组,共同组成一个字符,所以一个带重音的字母或一个汉字会产生多个数字。如果在“文本编码”中选择 GBK,每个汉字对应两个数字。西欧文字可以选择 ISO-8859-1,它的每个字节值都等于该字符的 Unicode 码位;也可以选择 Windows-1252。

如果要把单个数字换成其他进制,例如把 255 转换为十六进制,请使用进制转换器。想用其他形式查看同样的字节,可以试试十六进制或二进制。

在代码中获取十进制字节值

# Python
list('Hi'.encode())                  # [72, 105]
bytes([72, 105]).decode()            # 'Hi'

// JavaScript
[...new TextEncoder().encode('Hi')]                   // [72, 105]
new TextDecoder().decode(new Uint8Array([72, 105]))   // 'Hi'

编码规格

字母表0-9
输出体积每字节 1 到 3 位数字,另加分隔符
填充无
标准十进制字节值
区分大小写否

编码示例

输入 (UTF-8)输出
Hello, World!72 101 108 108 111 44 32 87 111 114 108 100 33
Base64.is66 97 115 101 54 52 46 105 115
你好228 189 160 229 165 189

常见问题

字母 A 的 ASCII 码是多少?

大写 A 是 65,小写 a 是 97,在 ASCII 和 UTF-8 中都一样。后面的字母依次加一,所以 Z 是 90,z 是 122。

没有分隔符的十进制数字能解码吗?

不能。像 72105 这样的数字串可以有多种切分方式,所以解码器要求用空格、逗号、分号或换行把数字隔开。数字前面可以带前导零。

为什么大于 255 的数字会报错?

一个字节只能表示 0 到 255。更大的数字(例如欧元符号的 Unicode 码位 8364)不是字节值。请直接输入字符本身再编码,就能看到它在 UTF-8 等编码下的字节。

为什么一个汉字会变成好几个数字?

UTF-8 用 3 个字节存储常用汉字,每个字节都会变成一个数字。如果希望每个汉字只对应两个数字,可以把“文本编码”切换为 GBK。