<< 2007年09月
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

Java で符号なし整数が扱えないのって不便じゃないの?

2007/09/04 20:09

 

FlashのSWFファイルを解析する処理をJavaで作っていて
すったもんだの末、上記の疑問に到達して立ちすくんでおります。

SWFの中には、普通にUI16( unsigned int 16, 符号なし整数16ビット)が出てくるんですが、、、
32767を超える整数が保存されてたら、Javaに読んだ瞬間マイナスの数字として誤認識されるのでは・・・?

符号なし整数16は、符号付き整数32で読めってことなのかなー?

例えば、読んだ2バイトのデータをそのまま処理せずに
頭に2バイト分ゼロを付け足して、4バイトのデータとして扱うとか??

いやいや、事情はもう少し複雑だったりする。

不幸なことに、SWFファイル中の数字はリトルエンディアンで保存されている。
Javaでリトルエンディアンを扱うにはByteBuffer を使うのが良さそうなのだけれども、用意されているメソッドは getShort, getInt というように、「xバイト分データを取って、数字に変換する」がワンセットになってしまっているのだ。

つまり数字に変換する前に、頭にゼロを付けるという技が使えないのだっ。


うえぇぇぇ


こうなったら、素直に1バイトずつ読んで、2バイト目のデータだけ8ビットシフトさせて足し算するしかない?
しかししかし、1バイトずつ読んだとしても足し算する時に符号を間違えてしまう問題がっ。
(論理演算すればいいのかっ??)

うえぇぇぇぇぇ



どうすんねんこれ〜。

ドキドキしよう!!ワクワクしよう!!meet-me meet-meとは? [meet-me(ミートミー)は東京を忠実に再現した3D仮想空間です!]

カテゴリ: IT  > ITビジネス    フォルダ: メケ

コメント(0)  |  トラックバック(0)

 
このブログエントリのトラックバック用URL:

http://t100.iza.ne.jp/blog/trackback/290081

トラックバック(0)