为了账号安全,请及时绑定邮箱和手机立即绑定

在java中将PDF文件转换为十六进制格式

在java中将PDF文件转换为十六进制格式

慕盖茨4494581 2024-01-17 17:03:18
我需要使用java将pdf文件转换为十六进制。任何快速帮助将不胜感激。问候。
查看完整描述

2 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

快速帮助看起来像这样


static String toHex(File file) throws IOException {

    InputStream is = new BufferedInputStream(new FileInputStream(file));


    int value = 0;

    StringBuilder hex = new StringBuilder();


    while ((value = inputStream.read()) != -1) {

        hex.append(String.format("%02X ", value));



    }

    return hex.toString();

}

为了简单起见,我跳过了一些边缘情况。但我认为这是一个好的开始。实际上,您必须检查字符是否可转换为十六进制并处理所有可能引发的异常。


main 方法看起来像这样。


 public static void main(String[] args) throws IOException {

    File file = new File("sample.pdf");

    String hex = toHex(file);

    System.out.println(hex);


}


查看完整回答
反对 回复 2024-01-17
?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

一个很好的用例ByteBuffer(尽管byte[]在这里就足够了):


byte[] toHex(Path path) {

    byte[] content = Files.readAllBytes(path);


    ByteBuffer buf = ByteBuffer.allocate(content.length * 2);

    for (byte b : content) {

        byte[] cc = String.format("%02x", 0xFF & b).getBytes(StandardCharsets.US_ASCII);

        buf.put(cc);

    }

    return buf.array();

}

速度提升:


    for (byte b : content) {

        int c = (b >> 4) & 0xF;

        int d = b & 0xF;

        buf.put((byte) (c < 10 ? '0' + c : 'a' + c - 10));

        buf.put((byte) (d < 10 ? '0' + d : 'a' + d - 10));

    }

这假设文件不大。(但在这种情况下,十六进制就没有意义。)


查看完整回答
反对 回复 2024-01-17
  • 2 回答
  • 0 关注
  • 172 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信