[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
の処理を実行したい