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