-1

これは、ファイルを 16 進数に変換する唯一のコードですが、ファイルを開き、Java コードが 16 進数を読み取り、特定のバイトを抽出する必要があります (たとえば、ファイル拡張子:

import java.io.*;
public class FileInHexadecimal
{        
    public static void main(String[] args) throws Exception 
    {                
     FileInputStream fis = new FileInputStream("H://Sample_Word.docx");                
     int i = 0;                
     while ((i = fis.read()) != -1) {                       
        if (i != -1) {                                
        System.out.printf("%02X\n ", i);
     } 
    }  
    fis.close();    
   }
}
4

1 に答える 1

4

内部表現と外部表現を混同しないでください。16 進数に変換するときに行うことは、同じバイトの異なる表現を作成することだけです。

ファイルからいくつかのバイトを読み取るだけの場合は、16 進数に変換する必要はありません。読み取るだけです。たとえば、最初の 4 バイトを読み取るには、次のようなものを使用できます。

byte[] buffer = new byte[4];
FileInputStream fis = new FileInputStream("H://Sample_Word.docx");  
int read = fis.read(buffer);
if (read != buffer.length) {
    System.out.println("Short file!");
}

ファイル内の任意の位置からデータを読み取る必要がある場合は、ストリームを使用する代わりにRandomAccessFileを確認することをお勧めします。RandomAccessFile読み取りを開始する位置を設定できます。

于 2013-02-06T14:41:42.560 に答える