2009年06月18日

J2MEでバイナリー操作

ケータイのアプリでバイナリーの操作をするのは非常にキツイ。
そもそもJ2ME、MIDPにはんなものは企画のウチに入ってない。
当然っちゃ当然だが。
J2SEにはByteOrderという素晴らしい関数があるにも関わらず…!

なので、どうしてもシフト演算を駆使するしかなくなる。

で、どうやるか。

幸運にもJ2SEでもbyteの配列は扱える。
なので仮に扱うバイト配列を

byte[] databyte = {0x00, 0x00, 0x02, 0x80};

などとしておく。int型は32ビット = 4バイト。

で、このバイト配列→int型の変換をどうやるかというと、


return (((int) b[3]) & 0xFF) +
((((int) b[2]) & 0xFF) << 8) +
((((int) b[1]) & 0xFF) << 16) +
((((int) b[0]) & 0xFF) << 24);


でできてしまう。(但し、BIG Endianの場合)
0xffをANDしてるのはbyteの範囲が-128〜127までのため。

で、System.arraycopyでバイト配列の操作、this.getClass().getResourceAsStreamでリソースファイル(バイナリーファイル)を読み込むと…

出来た。

うっしゃ!
posted by 1.618 at 10:21| Comment(0) | ケータイアプリ開発 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: