From: matz@... (Yukihiro Matsumoto) Date: 2002-03-23T02:01:18+09:00 Subject: [ruby-dev:16544] Re: sprintf("%u") まつもと ゆきひろです In message "[ruby-dev:16543] Re: sprintf("%u")" on 02/03/23, Koji Arai writes: |2の補数表現で最上位ビットが無限に続く数値に対して符号無し整 |数を要求するというのば、利用者の意図は引数を固定長の整数とし |てみなしたいのだと想像します。 | |なので、安易に Ruby の内部表現のサイズの整数を符号無しにして |しまえばと思ったのです。はっきりいって現状でそういう出力をし |てますよね。(".."が頭につくことを除けば) | |幸い内部表現のサイズは size メソッドで公開してますし、あまり |抵抗は感じないなと思ったのです。 | | n = -10 ** 10 | p "%u" % n | p "%d" % (n & ~(-1 << (n.size*8))) | | => "..18446744063709551616" | "18446744063709551616" | |まあ、そもそも %u なんていらないという説もありそうですが。 納得したので取り込みます。ただし、-wで警告を出すようにしよう と思います。