5

这是一个基本问题。

当我使用字节流将字节写入文件时,我是在创建二进制文件吗?

例如:我使用字节流将文本数据写入记事本,当我在十六进制查看器中打开记事本时,我会看到每个字符对应的十六进制值。但为什么不是二进制值(即 0 和 1)。

我还了解到,使用数据输出/输入流我读/写二进制文件。

我想我的困惑是写字节是什么意思,写二进制数据是什么意思。

4

4 回答 4

4

当我使用字节流将字节写入文件时,我是在创建二进制文件吗?

您按原样写入字节例如,按原样写入字节。如果这些字节代表字符,那么通常no,它只是一个文本文件(毕竟一切都是 1 和 0)。否则答案取决于。术语二进制文件具有误导性,但通常指的是可以包含任意数据的文件

当我在十六进制查看器中打开记事本时,我会看到每个字符对应的十六进制值。但为什么不是二进制值

HEX 只是字节的另一种表示形式。以下三个是相等的

10       (Decimal value 10)
0xA      (Hex value 10)
00001010 (Binary value 10)

计算机只存储二进制值。但编辑者可以选择以其他方式表示(显示)它们,例如十六进制十进制形式。给定足够的字节,它甚至可以表示为图像。

写字节是什么意思,写二进制数据是什么意思

二进制数据表示10,例如000010108 位。8bits做一个byte.

于 2012-09-04T18:07:50.950 回答
1

混淆可能是由您正在使用的应用程序引起的。如果您在 HEX 查看器中打开某些内容,它应该以 HEX 而不是 BIN 表示。

于 2012-09-04T18:07:54.610 回答
1

“文本”和“二进制”文件的概念对于您和我作为文件的“消费者”来说,主要是一种概念上的理解。严格来说,每个文件都由 1 和 0 组成,因此都是真正意义上的二进制文件。十六进制表示、特定字符集的编码、图像文件格式。您可以启动一个 100 个随机字节的数组,将其输出到一个文件中,它就像任何其他文件一样“二进制”。这一切都在如何解释字节的上下文中有所不同。

这是一个例子。在久经考验的 ACII 中,大写字母“A”被编码为十进制 65。您可以在十六进制查看器中将其表示为 0x41(十六进制),作为编辑器中的“A”,但最终,您将该字节写入文件,它只是一个字节转换为一系列八位,01000001。

于 2012-09-04T18:08:03.817 回答
1

通常,您使用 Writer(s) 创建一个文本文件,并使用其他方式(流、通道等)创建一个二进制文件。但是,如果您的“二进制”文件包含文本且仅包含文本,则无论如何它都是文本文件。

关于十六进制格式,这只是查看字节值的一种紧凑(首选)方式。

于 2012-09-04T18:09:36.737 回答