आप भाग्यशाली हैं। मुझे इसे कुछ महीने पहले करना था। यहां एक डंबेड-डाउन संस्करण है जो कमांड लाइन से दो पैरामीटर लेता है। कॉमांड लाइन पैरामीटर दोनों फ़ाइल नाम हैं ... पहला इनपुट फ़ाइल है और दूसरा आउटपुट फ़ाइल है। इनपुट फ़ाइल बाइनरी में पढ़ी जाती है और आउटपुट फ़ाइल ASCII हेक्स के रूप में लिखा जाता है। उम्मीद है कि आप इसे अपनी जरूरतों के अनुरूप ही अनुकूलित कर सकते हैं।
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
public class BinToHex
{
private final static String[] hexSymbols = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };
public final static int BITS_PER_HEX_DIGIT = 4;
public static String toHexFromByte(final byte b)
{
byte leftSymbol = (byte)((b >>> BITS_PER_HEX_DIGIT) & 0x0f);
byte rightSymbol = (byte)(b & 0x0f);
return (hexSymbols[leftSymbol] + hexSymbols[rightSymbol]);
}
public static String toHexFromBytes(final byte[] bytes)
{
if(bytes == null || bytes.length == 0)
{
return ("");
}
// there are 2 hex digits per byte
StringBuilder hexBuffer = new StringBuilder(bytes.length * 2);
// for each byte, convert it to hex and append it to the buffer
for(int i = 0; i < bytes.length; i++)
{
hexBuffer.append(toHexFromByte(bytes[i]));
}
return (hexBuffer.toString());
}
public static void main(final String[] args) throws IOException
{
try
{
FileInputStream fis = new FileInputStream(new File(args[0]));
BufferedWriter fos = new BufferedWriter(new FileWriter(new File(args[1])));
byte[] bytes = new byte[800];
int value = 0;
do
{
value = fis.read(bytes);
fos.write(toHexFromBytes(bytes));
}while(value != -1);
fos.flush();
fos.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
स्रोत
2009-08-21 23:37:37
विम में 'हेक्सडम्प', 'हेक्सेडिट' या बस ':%! xxd' जैसे टूल का उपयोग करना आसान नहीं होगा? –