FlashのSWFファイルを解析する処理をJavaで作っていて
すったもんだの末、上記の疑問に到達して立ちすくんでおります。
SWFの中には、普通にUI16(
32767を超える整数が保存されてたら、Javaに読んだ瞬間マイナスの数字として誤認識されるのでは・・・?
符号なし整数16は、符号付き整数32で読めってことなのかなー?
例えば、読んだ2バイトのデータをそのまま処理せずに
頭に2バイト分ゼロを付け足して、4バイトのデータとして扱うとか??
いやいや、事情はもう少し複雑だったりする。
不幸なことに、SWFファイル中の数字はリトルエンディアンで保存されている。
Javaでリトルエンディアンを扱うにはByteBuffer
つまり数字に変換する前に、頭にゼロを付けるという技が使えないのだっ。
うえぇぇぇ
こうなったら、素直に1バイトずつ読んで、2バイト目のデータだけ8ビットシフトさせて足し算するしかない?
しかししかし、1バイトずつ読んだとしても足し算する時に符号を間違えてしまう問題がっ。
(論理演算すればいいのかっ??)
うえぇぇぇぇぇ
どうすんねんこれ〜。
このブログエントリのトラックバック用URL:
http://t100.iza.ne.jp/blog/trackback/290081


![ドキドキしよう!!ワクワクしよう!!meet-me meet-meとは? [meet-me(ミートミー)は東京を忠実に再現した3D仮想空間です!]](/images/meetme/blog/blog_top.jpg)
by tmoro
Hadoopがジワジワきてるかもし…