我刚刚完成了一门计算机组织课程,在该课程中,我们了解到所有文件和数据都以0和1(位)的形式存储。 但是,我很好奇程序员如何实际访问文件的二进制表示形式? 也就是说,如何查看(或访问)代表计算机上任何文件的 0 和 1?
最基本的层面上,所有内容都存储为位,但如今大多数处理器只允许您访问字节(8 位块)。但是,从字节中,您可以确定位是否为1。
要获取字节byte
位置pos
位(从最低有效位 0 到最高有效位 7)的值,您可以使用以下代码(此处为 C 格式,但它可能在许多语言中有效):
// bit here is likely 32 bits, but it will only contain 0 or 1,
// based on the value of the bit at pos in byte
int bit=(byte>>pos)&1;
您当然可以逐个字符读取文件,假设 Java 具有或将字符视为无符号,您将字节转换为整数 - 那么每个字节的十进制值将是特定字节的总和。然后,您可以将其基数更改为可表示的二进制形式:
String byte = Integer.toBinaryString(integer);
这应该在 Java 包java.lang
(toBinaryString) 中,您可以使用所需的任何流字节包装器循环直到文件末尾。
编辑:
就程序员如何读取二进制格式的问题提供见解(尽管在低级别)
我不确定如何在 Java 中执行此操作,尽管在 C 中您将创建一个结构(变量容器)并直接读取每个成员的字节,您可以事先通过定义的文件类型假设文件结构(即读取 4 个字节,制作浮点数,读取 n 个字节作为矢量数组)