/** * Hexdump.java * * Dumps a binary file to a ascii, in hexadecimal. * Copyright (c) 1999,2000 W.Finlay McWalter * */ import java.io.*; public class Hexdump { private static final int BYTES_PER_LINE = 16; private static final int PADDING = 4; private static void printSpaces(int spaces){ for(int x = 0; x < spaces; x++){ System.out.print(" "); } } private static char charFromHexDigit(int digit){ if((digit >= 0) && (digit <=9)) return (char)(digit + '0'); else return (char)(digit -10 + 'a'); } private static void printByte(byte b){ int i = (b>=0)?b:(256+b); System.out.print(charFromHexDigit(i/16)); System.out.print(charFromHexDigit(i%16) + " "); } /** * Prints an unsigned hex value, with between * 1 and 8 digits. */ private static void printUnsignedHex(int i, int digits){ for(int d=(8-digits); d < digits; d++){ int digitValue = (int)(i >> (4*(7-d)))%16; char c = charFromHexDigit((digitValue>=0)?digitValue :(16+digitValue)); System.out.print(c); } } private static String MakeStringFromUnsigned(int i, int digits){ char [] buffer = new char[10]; for(int d=(8-digits); d < digits; d++){ int digitValue = (int)(i >> (4*(7-d)))%16; buffer[d]= charFromHexDigit((digitValue>=0)?digitValue :(16+digitValue)); } return new String(buffer); } private static void dumpFile(FileInputStream in){ try { byte[] inBuf = new byte[BYTES_PER_LINE]; int count; while((count = in.read(inBuf)) >0){ // print offset // print hex values for(int x=0; x= ' ') && (v < (char)0x7f)){ System.out.print(v); } else { System.out.print("."); } } System.out.println(); } } catch (IOException e){ System.out.println("error reading file"); } } public static final void main (String [] args){ if(args.length == 1){ try { FileInputStream inStream = new FileInputStream(args[0]); dumpFile(inStream); inStream.close(); } catch (FileNotFoundException e){ System.out.println("File \"" + args[0] + "\" not found"); } catch (IOException e){ System.out.println("error closing file"); } } else { System.out.println("usage:\n java Hexdump \n"); } } }