[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends:00073] Re: String を byte 配列で書き出す方法について
石黒です。
あまり悠長に付き合うことはできませんのでご了承ください。
> DBから取得した値を「そのまま」0xと共にバイトで書き出したい
の意味が良く分かりません。
「0xと共に」が実質的に何を意味しているのか、あるいは「バイト」
をどういう意味で使っているのかがあいまいです。
たとえば、
1.「DBから取得した値を「そのまま」0xと共にバイトで書き出す」
2.「DBから取得した値を16進数のデータとしてバイトで書き出す」
この2つの操作によって書き出されたデータにどんな違いが出て
くるのでしょう。
"0x"をつける意味はその右側の値を16進数で解釈してもらいたい
ということだと思うのですが、parseByteでは基数指定をすれば、
"0x"をつけなくても16進数に解釈してくれるので便利だと思います。
コンピュータの中ではどの道8bitの2進数で記憶されていることは
よく理解されているのですよね。
もう一度良く考えてみてください。
よろしく。
----- Original Message -----
From: "Yumiko Hiyama" <hiyama@xxxxxxxxxxxxx>
To: <jfriends@xxxxxxxxxxxx>
Sent: Thursday, January 30, 2003 10:02 AM
Subject: [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
> の処理を実行したい
>
>
>
>