From: matz@... (Yukihiro Matsumoto) Date: 1997-03-13T14:55:15+09:00 Subject: [ruby-list:2362] Re: [BUG] unpack まつもと ゆきひろです. In message "[ruby-list:2356] [BUG] unpack" on 97/03/13, Keiju ISHITSUKA writes: | |けいじゅ@SHLジャパンです. | |久々のバグレポートです. そろそろ安定して来たので 1.0 final でも出して,feature freezeしようかと思っていたのに. 結論からいうとこの問題は"L"を使うことが必要です. 0x80000000は32bit整数では負の値ですから,負の整数としてpack されます.unpackはこれを負の整数として取り出しますから,もと の整数とは違う値になります.perlは32bit整数しかないのに, rubyにはBignumがあることが裏目に出ましたね. しかし,"L"の方にバグがあって"l"と同じことをしていました.こ れは早急に直します. しかし,これで別の問題を発見しました.普通の場合はunsignedを つかうことで問題を回避できるのですが,n/N/v/Vにはunsignedが ありません. しょうがないんで Un/UN/Uv/UV などを導入してunsignedなものを使えるようにします. Uc/Us/Ui/Ul なども使えるようにします.ああ,また仕様が変わった…. まつもと ゆきひろ /:|)