Architecture 如何访问文件的二进制格式?

Architecture 如何访问文件的二进制格式?,architecture,binary,organization,binary-data,Architecture,Binary,Organization,Binary Data,我刚刚完成了一门计算机组织课程,在这门课程中,我们了解到所有文件和数据都以0和1(位)的形式存储。然而,我很好奇程序员如何真正访问文件的二进制表示形式?也就是说,我如何查看(或访问)代表我计算机上任何文件的0和1?虽然在最基本的级别上,所有内容都存储为位,但现在大多数处理器只允许您访问字节(8位块)。然而,从一个字节中,您可以判断一个位是否为1 要获取字节byte的位置pos(从最低有效位0到最高有效位7)的位值,可以使用此代码(此处为C,但在许多语言中可能有效): 您当然可以逐个字符读取文件,

我刚刚完成了一门计算机组织课程,在这门课程中,我们了解到所有文件和数据都以0和1(位)的形式存储。然而,我很好奇程序员如何真正访问文件的二进制表示形式?也就是说,我如何查看(或访问)代表我计算机上任何文件的0和1?

虽然在最基本的级别上,所有内容都存储为位,但现在大多数处理器只允许您访问字节(8位块)。然而,从一个字节中,您可以判断一个位是否为1

要获取字节
byte
的位置
pos
(从最低有效位0到最高有效位7)的位值,可以使用此代码(此处为C,但在许多语言中可能有效):


您当然可以逐个字符读取文件,假设Java具有或将字符视为无符号,则将字节转换为整数,然后每个字节的十进制值将是特定字节的总和。然后可以将其基更改为可表示的二进制形式:

String byte = Integer.toBinaryString(integer);
这应该在Java包
Java.lang
()中,您可以使用您想要的任何流字节包装器循环到文件末尾

编辑

提供有关程序员如何读取二进制格式(尽管是低级)的问题的见解


我不确定如何在Java中实现这一点,虽然在C中,您将创建一个结构(变量容器)并直接向每个成员读取字节,但您可以通过定义的文件类型(即读取4字节、使浮点、读取n字节作为向量数组)预先假定文件结构。

但是,我如何访问字节?另外,我可以用Java语言来代替C语言来做这件事吗?如果我试图使用Java打开一个文件(例如文本文件),那么我只能解析文件中的实际数据(例如字符串)……但是我如何解析字节呢?@whistler:只需使用或其他方法,像平常一样从文件中读取字节。如果您将
字节
重命名为其他名称(名称
字节
在Java中保留),我的答案中的代码应该可以工作。@whistler:哦,要从字节中获取所有位,只需使用我发布的循环
pos
方法,从7到0,包括7到0。好的,我会试试这个!谢谢,最好是Java。我只想能够“查看”或访问文件的字节。这是他们在学校教给我们的,但我想看到任何文件的实际1和0(例如我计算机上的txt文件或exe文件)。实际上,如果你只想看到文件,你应该找到一个十六进制编辑器,它是程序设计的,以这种方式查看文件。
String byte = Integer.toBinaryString(integer);