Bugs item #9410, was opened at 2007-03-20 11:38
You can respond by visiting: 
http://rubyforge.org/tracker/?func=detail&atid=1698&aid=9410&group_id=426

Category: Core
Group: 1.8.6
Status: Open
Resolution: None
Priority: 3
Submitted By: Daniel Azuma (dazuma)
Assigned to: Nobody (None)
Summary: Bignum.to_s fails for certain values and certain bases (1.8.6 regression)

Initial Comment:
irb(main):001:0> RUBY_VERSION
=> "1.8.6"
irb(main):002:0> RUBY_PLATFORM
=> "i686-darwin8.8.1"
irb(main):003:0> 18446744073709551615.to_s(32) # should be "fvvvvvvvvvvvv"
=> "vvvvvvvvvvvv"
irb(main):004:0> 18446744073709551616.to_s(32) # correct
=> "g000000000000"
irb(main):005:0> 18446744073709551615.to_s(36) # should be "3w5e11264sgsf"
=> "w5e11264sgsf"
irb(main):006:0> 18446744073709551616.to_s(36) # correct
=> "3w5e11264sgsg"
irb(main):005:0> 18446744073709551615.to_s(31) # correct
=> "nd075ib45k86f"
irb(main):006:0> 18446744073709551616.to_s(31) # correct
=> "nd075ib45k86g"

I verified this on i686-linux (Fedora Core 5) also.

18446744073709551616 is, of course, 2^64. At first glance, it looks like values less than that threshold, when converted to base 32 or above, are being truncated to 12 characters. Could this have been an optimization gone awry?


----------------------------------------------------------------------

You can respond by visiting: 
http://rubyforge.org/tracker/?func=detail&atid=1698&aid=9410&group_id=426