2013-11-28 115 views
0

我有一个309位整数,我想遍历其字符。迭代通过一个bignum - 红宝石

目前我使用:

require 'openssl' 
e = 116505013962726356794269846667188147473899121100449069443844506823885859211073843523906823741034558875724969276233769835502344452366515593952571468651971447660633083078837371793388842846199643249996094940742465135064478448126948741186882484457847959126808512823416166517945252986434515406363102297514031583117 

,我有:

e.times do |i| 
    ... 
end 

其中,可以理解,产生错误:

undefined method `times' for #<OpenSSL::BN:0x007fec05002140> 

我试图将BIGNUM转换为整数:

e.to_i.times do |i| 
    ... 
end 

其中返回:

bignum too big to convert into `long' 

我明白为什么我收到这些错误,但我问我怎么过如此大量的每个字符重复?

+2

迭代'e'次将带你到时代的尽头。 – Vache

+1

你的意思是“遍历数字(作为字符)在基地10代表”(目前的答案地址),还是别的? –

+0

我不认为这很实际。即使有办法做到这一点,但我认为在迭代结束时你仍然还活着。 – sawa

回答

3

这是怎么回事?

e = 116505013962726356794269846667188147473899121100449069443844506823885859211073843523906823741034558875724969276233769835502344452366515593952571468651971447660633083078837371793388842846199643249996094940742465135064478448126948741186882484457847959126808512823416166517945252986434515406363102297514031583117 
e.to_s.each_char do |c| 
    # code 
end 
+0

窍门,谢谢! – Derptacos

+1

已经有一个each_char迭代器。 e.to_s.each_char {| C | ...} – AndyV

+0

@AndyV感谢您指向正确的方法... :)有一段时间我忘了.. –