- PR -

HttpServletResponseへbyte出力

1
投稿者投稿内容
ノムラ
会議室デビュー日: 2005/11/10
投稿数: 8
投稿日時: 2006-03-27 16:35
ノムラと申します。宜しくお願いします。

現在、HttpServletResponseへ1byte数値を出力しようとしているのですが、
どうも上手く行きません。
と言うのも、数値を出力しようとすると、2byte出力になってしまうのです。

実際には↓の様にやっております。

//引数:HttpServletResponse response

//例:0x0d(13)を出力
response.setContentType("binary");

//PrintWriter out = response.getWriter() も結果同じ
ServletOutputStream outputStream = response.getOutputStream();

//Integer integer = new Integer(0x0d);
//byte bs = integer.byteValue();
//outputStream.print(bs); これも0x0d直書きと一緒の結果
outputStream.print(0x0d);

出力ダンプ
0x31 0x33
(数値の1と3で1byteづつ出力される)
これを以下の様にやりたいのですが、
出力ダンプ
0x0d 0x00
(13を0x0dとして1byteで出力したい)
数値の1桁までは1byte出力してくれるのですが、
どうも2桁以上ですと桁毎に1byteづつ(10なら"1"と"0"に分けられる)
出力してくれるようです。

ここで詰まってしまい、諸先輩方のお知恵をお借りしたいのです。
お忙しい中申し訳ありませんが、アドバイスの程宜しくお願いいたします。
かしん
常連さん
会議室デビュー日: 2004/08/27
投稿数: 25
お住まい・勤務地: 窓際
投稿日時: 2006-03-27 16:56
ServletOutputStreamのprint(hoge)は、文字列としての出力なので、
数値を文字列に変換し、
0x31 0x33 = "13"
となっているのでしょう。

なので、write(byte)メソッドで書き出せばよいのではないでしょうか。
ノムラ
会議室デビュー日: 2005/11/10
投稿数: 8
投稿日時: 2006-03-27 17:10
かしん様アドバイスありがとう御座いました。

Integer integer = new Integer(0x0d);
byte bs = integer.byteValue();
outputStream.write(bs);
これで無事ダンプに0x0dと出力されました。
本当にありがとう御座いました。
1

スキルアップ/キャリアアップ(JOB@IT)