【发布时间】:2023-04-06 12:26:02
【问题描述】:
我现在正在学习 Java 中的文本 I/O 和二进制 I/O。我读到您写入文件的每个值最初都以二进制形式存储。对于文本 I/O,单个数字被转换为其对应的 Unicode 值,然后编码为特定于文件的编码,例如 ASCII。对于二进制 I/O,二进制值直接在文件中表示。例如,199 将表示为 0xC7,二进制为 11000111。现在我在一方面感到困惑。如果变量最初以二进制格式存储,那么每个数字是表示存储的单独字节还是存储为单个字节的整个数字。例如,199 是否最初存储为 0xc7,它在二进制中是 11000111?还是将其存储在 3 个字节中,每个字节代表该数字的二进制值。如果它存储在 3 个单独的字节中,二进制 I/O 是否将该 3 字节数转换为单个字节?如果它存储在单个字节中,文本 I/O 如何将该单个字节转换为 3 个单独的字节值。我只是对如何措辞感到困惑。希望你能明白我在说什么。谢谢
【问题讨论】:
-
如果你有一个数字 42,你会将 4 和 2 分别存储在一个单独的字节中吗?或者您会将 42 存储在单个字节中吗?
-
是的,这就是我要问的。
-
如果您在谈论二进制,请忘记有关文本的所有内容,因为这会导致混乱。当一个数字在二进制文件中表示时,假设您在谈论 8 位值,它实际上就是: 11000111 正如您所提到的。如果它是 16 位、32 位或 64 位,它还会有更多的前导零。我希望这会有所帮助。
-
我不知道你所说的“最初存储”是什么意思,或者当你的问题是关于文件时,为什么你的标题说“在内存中”。
标签: java file memory io binary