【发布时间】:2020-09-06 06:30:54
【问题描述】:
我并不是要一个内置类来完成这个,我只是好奇编码在 java 中是如何在幕后工作的。例如,Java 中的整数可以存储在 4 个字节中,介于 -2147483648 和 2147483647 之间。让我们使用 500 作为此演示的数字。据我了解,计算机最初将此数字以十六进制的 1F4 形式存储在内存中,即二进制的 00000000 00000000 00000001 11110100 。当我查看 ASCII 的工作原理时,它将每个数字 0-9 编码为其对应的 ASCII 值(0 转换为 048)。但是,存储在 ram 中的二进制数如何能够将每个数字分开,以便将每个数字编码为相应的 ASCII 值?我们知道这个数字是 500,但这只是一个抽象。计算机只看到 1 和 0。那么对于这个例子,5 是如何映射到 053 的,而两个 0 是如何映射到 048 的。 jvm 会在幕后自动解决这个问题吗?还是我误解了整个过程是如何运作的。谢谢。
【问题讨论】:
-
Java 字符是 16 位整数类型。 Ascii Table 包含 127 个有效的 ascii 字符及其到整数常量的映射。通常,将该映射编码为编程语言的过程是三阶段引导过程的“阶段 1”。这不是 Java 独有的。另请参阅Reflections on Trusting Trust。
标签: java encoding binary ascii