【发布时间】:2011-08-21 03:43:22
【问题描述】:
我正在尝试读取幻数/字节来检查文件的格式。在 Linux 机器上逐字节读取文件的工作方式是否相同?
编辑:以下显示使用 int 从类文件中获取魔术字节。我正在尝试对可变数量的字节做同样的事情。
【问题讨论】:
-
这些问题可能对你有帮助:stackoverflow.com/questions/1915317/…
标签: java cross-platform magic-numbers
我正在尝试读取幻数/字节来检查文件的格式。在 Linux 机器上逐字节读取文件的工作方式是否相同?
编辑:以下显示使用 int 从类文件中获取魔术字节。我正在尝试对可变数量的字节做同样的事情。
【问题讨论】:
标签: java cross-platform magic-numbers
我不确定我是否理解您要执行的操作,但听起来您要执行的操作与您链接的代码正在执行的操作不同。
java 类格式被指定为以幻数开头,因此代码只能用于验证文件是否可能是 java 类。您不能使用相同的逻辑并将其应用于任意文件格式。
编辑:.. 还是您只想检查 wav 文件?
Edit2:Java 中的一切都是大端序,也就是说你可以使用 DataInputStream.readInt 从文件中读取前四个字节,然后将返回的 int 与 0x52494646(RIFF 作为大端序整数)进行比较
【讨论】:
checkClassVersion 方法仅限于检查Java 类文件。可以通过读取字节并转换/检查 Hex/ASCII 值以类似的方式检查其他文件格式(我不久前设法做到了这一点,但当 HDD 发生故障时丢失了源)。下面的这个页面给出了可能的文件签名列表,因为它们被称为。字节序http://www.garykessler.net/library/file_sigs.html