- PR -

ByteBufferの使い方

1
投稿者投稿内容
volvic
会議室デビュー日: 2006/08/20
投稿数: 17
投稿日時: 2007-02-06 12:04
重複投稿してしまいましたので、
勝手ながらこのスレッドは終了します。
投稿いただいた方、ありがとうございました。
#ここの投稿は最初のスレッドへ移行します。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=36560&forum=12&7

[ メッセージ編集済み 編集者: volvic 編集日時 2007-02-06 15:26 ]

[ メッセージ編集済み 編集者: volvic 編集日時 2007-02-06 15:27 ]
あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2007-02-06 12:26
引用:

volvicさんの書き込み (2007-02-06 12:04) より:
ByteBuffer b = ByteBuffer.allocate(1024);
b.putInt(msg);
b.putInt(str.length());
b.put(str.getBytes());



このソースではASCII範囲なのでバイト数と文字数が一致しますが、
正しくはstr.getBytes()の結果のバイト配列の長さですよね。

引用:

int len2 = sourceChannel.read(d);
System.out.println("read len : " + len2);
int msg2 = d.getInt();


read()とgetInt()の間にflip()が必要なのでは?
volvic
会議室デビュー日: 2006/08/20
投稿数: 17
投稿日時: 2007-02-06 12:43
早速のご返答ありがとうございます。

>正しくはstr.getBytes()の結果のバイト配列の長さですよね。
実際にバイトに置き換えた長さの配列を作らないといけないということですね。

>read()とgetInt()の間にflip()が必要なのでは?
読み込みポジションとリミットを入れ替えるんですよね>flip
すみません。flipしても結果は変りませんでした。

書き込みバイト数が異常に大きいような気がするんですが、
これであってるんでしょうか。
>write len : 982
>read len : 982
1

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