[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends:00071] Re: String を byte 配列で書き出す方法について



石黒様 

 アドバイスどうも有難うございました。

アドバイス頂いた内容ですが、DBから取得した値を
「そのまま」0xと共にバイトで書き出したいため、
parseByteメソッドは今回の場合は使用できないよう
に思われました。
 例えば、
String = "10"
 の場合、10をそのまま"0x"と結合させて
(byte)0x10 としたいからです。
 
処理のイメージとしては下記のようなイメージです。

①変数にセット
StringA = "0x";  → 固定変数
StringB = "87"; → DBから取得

②StringA と StringBを結合する
StringC = StringA + StringB;
③結合したものをバイトにする
④ファイルに書き出す
⑤書き出された内容をテキストエディタで見ると文字化け
をしていたらOK

そこで、今回下記のコードを実行してみたのですが、書き出したファイルの
内容には、0xA7 とそのまま表示されてしまうのでこれも使用できません
でした。<ソース1>を実行した場合には(byte)0xA7 の処理で、ファイル
に書き出された時には文字化けしますが、この部分を下記のソースでは
記述できません。バイト配列で結合させたaryTempをバイトにキャストする
ことができれば、やりたい処理が可能だと思うのですが、分かりません。

 もし分かるようであれば、もう一度教えていただけないでしょうか?

  byte[] arybytSrc1 = StringA .getBytes();
  byte[] arybytSrc2 = StringB .getBytes();

  int intLen = arybytSrc1.length + arybytSrc2.length;
  int intIdx = 0;
  //全配列要素数の配列を生成
  byte[] aryTemp = new byte[intLen];
  //新配列へSRC配列1をコピー
  if (arybytSrc1.length!=0){
      System.arraycopy(arybytSrc1, 0, aryTemp, 0, arybytSrc1.length);
   intIdx = arybytSrc1.length;
  }
  //新配列へSRC配列2をコピー
  if (arybytSrc2.length!=0){
      System.arraycopy(arybytSrc2, 0, aryTemp, intIdx, arybytSrc2.length);
   intIdx = intIdx + arybytSrc2.length;
  }
 String  strTestFile =".../test.csv";

   try{
    BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream
strTestFile,true));
    out.write(aryTemp);
    out.close();
  } catch (IOException e) {
    System.err.println(e);
  }

↓
<やりたい事>
out.write(aryTemp);
で書き出す前に
(byte)aryTemp 
の処理を実行したい