• ベストアンサー

javaバイナリ変換したデータのファイル出力

現在、 String test_st = "0123456789abcdef"; というデータを byte[] bytes = test_st.getBytes("UTF-8"); このコードでバイナリ変換したのですが、このbytesに格納したバイナリデータたバイナリファイルとして出力したいのですが、どのようにしたらよいかご教授よろしくお願い致します。 BinaryFileWriter writer = new BinaryFileWriter(); このようなコードで出力できるとのサンプルもあったのですが、うまくいきません。 どうぞ、よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

ん? byte[]をファイルに出力するんなら↓のようになるんジャマイカ。 public static void main(String[] args) throws Exception { String test_st = "0123456789abcdef"; byte[] bytes = test_st.getBytes("UTF-8"); FileOutputStream fos = new FileOutputStream("C:\\Users\\hogefuga\\okwave.txt"); fos.write(bytes); fos.close(); } 「いやいやいや、それじゃ結局0123456789abcdefっていう中身のテキストファイルになるでしょ」って言うんならそもそもtest_st.getBytes("UTF-8")がおかしい。01,23,45,67,89,ab,cd,efっていうバイト列のバイナリファイルを保存したいなら、byte[] bytesが{ 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }じゃないといけないわけよ。つまり、この問題はOutputStream云々じゃなくて、保存したいバイナリデータ(=byteの配列)をどう作るかってだけの話。 ちなみにtest_st.getBytes("UTF-8")が返す結果は以下のようになる。 { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66 } 16進テキスト(String)を16進バイト列(byte[])にする方法はネット上にいくらでも転がっているので探してみてください。

diy_sunny
質問者

お礼

回答いただきありがとうございます。ファイル出力のできました。助かります。また、テキストデータとバイナリの数値データの混在ファイルの作り方もStringデータの"0123"だと"0x30,0x31,0x32,0x33"とかになっちゃいますね。 自分としては0x30のデータだったら0x00 0x31なら0x01 とかのswitch文で分岐させて数値データに変えてやるような感じにしようかなとか思ってます。

関連するQ&A