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

我需要使用java将pdf文件转换为十六进制。

任何快速帮助将不胜感激。

问候。


慕盖茨4494581
浏览 174回答 2
2回答

DIEA

快速帮助看起来像这样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);}

翻过高山走不出你

一个很好的用例ByteBuffer(尽管byte[]在这里就足够了):byte[] toHex(Path path) {&nbsp; &nbsp; byte[] content = Files.readAllBytes(path);&nbsp; &nbsp; ByteBuffer buf = ByteBuffer.allocate(content.length * 2);&nbsp; &nbsp; for (byte b : content) {&nbsp; &nbsp; &nbsp; &nbsp; byte[] cc = String.format("%02x", 0xFF & b).getBytes(StandardCharsets.US_ASCII);&nbsp; &nbsp; &nbsp; &nbsp; buf.put(cc);&nbsp; &nbsp; }&nbsp; &nbsp; return buf.array();}速度提升:&nbsp; &nbsp; for (byte b : content) {&nbsp; &nbsp; &nbsp; &nbsp; int c = (b >> 4) & 0xF;&nbsp; &nbsp; &nbsp; &nbsp; int d = b & 0xF;&nbsp; &nbsp; &nbsp; &nbsp; buf.put((byte) (c < 10 ? '0' + c : 'a' + c - 10));&nbsp; &nbsp; &nbsp; &nbsp; buf.put((byte) (d < 10 ? '0' + d : 'a' + d - 10));&nbsp; &nbsp; }这假设文件不大。(但在这种情况下,十六进制就没有意义。)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java