3

music.mp3またはimage.jpgまたは考慮すべきファイルがあるとします。これらのファイルのバイナリ表現をJavaで文字列値に変換して表示できるようにするにはどうすればよいですか??

例:ファイルが呼び出された場合、それはメモリ内で次のよう'video.mp4'に表される必要があります。値を取得して、次のように文字列に保存する必要があります101011010101000111010String s = "101011010101000111010"

Javaでこれを行う方法について誰か考えがありますか??

EDIT 2文字列を実際のファイルに戻すにはどうすればよいですか??

4

1 に答える 1

5

16 進数をお勧めします。はるかにコンパクトで読みやすいです

    StringBuilder sb = new StringBuilder();
    try (BufferedInputStream is = new BufferedInputStream(new FileInputStream("1.txt"))) {
        for (int b; (b = is.read()) != -1;) {
            String s = Integer.toHexString(b).toUpperCase();
            if (s.length() == 1) {
                sb.append('0');
            }
            sb.append(s).append(' ');
        }
    }
    System.out.println(sb);

出力

71 77 65 77 65 72 0D 0A 71 77 72 65 0D 0A 72 77 65 72 0D 0A 

バイナリ文字列の場合、コードを変更します

            String s = "0000000" + Integer.toBinaryString(b);
            s = s.substring(s.length() - 8); 
            sb.append(s).append(' ');

この出力を取得します

01110001 01110111 01100101 01110111 01100101 01110010 00001101 00001010 

これは、文字列を解析してファイルに書き戻す方法です

    BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("2.txt"));
    Scanner sc = new Scanner(s);
    while (sc.hasNextInt()) {
        int b = sc.nextInt(2);
        out.write(b);
    }
    out.close();
于 2013-01-18T09:43:12.687 に答える