我制作了一个比较文件签名的工具,它通过读取文件的前这么多字节,然后将其转换为十六进制字符串,然后将此结果与数组进行比较,最后在 JText 区域上打印匹配的文件类型来做到这一点,我的问题是,当我输入一个 doc 文件时 - 例如,前 8 个十六进制数字是“50 4B 03 04”,但是当它在 JText 区域上打印出来时,我得到 504B34,现在我认为它是因为零二进制是 0000 .... 4 (50 4B 03 '04') 我认为它是 00000100 所以我认为代码只是不输出前 4 个字节,如果它是一个零,有人知道如何包含所有零?
好的,我知道我的问题,我可以发布它来解释,正如你所看到的,这是我的代码片段,我在其中创建了一个字符串生成器来将字节转换为十六进制,问题是我试图格式化字符串带有 sb.append("%02x.. 等的构建器,但是当我将它放在 headerData 行中时,我认为它不会对字符串构建器做任何事情:
}
StringBuilder sb = new StringBuilder();
for(byte b:a){
sb.append(String.format("%02x", b));
}
if (i != -1) {
HeaderData unknownHead = new HeaderData(" ", (sb.toString()));