使用pack / unpack重新实现to_i

时间:2014-07-04 01:41:49

标签: ruby

我重新实现String#to_i以使用字节来存储单个字符。我的解决方案是:

def to_i(string)
  string.bytes.map { |ascii| ascii - 48 }.inject { |sum, int| sum * 10 +  int}
end

to_i("22") # => 22

我想知道是否可以用to_ipack来实现unpack

1 个答案:

答案 0 :(得分:0)

pack / unpack这里唯一能做的就是将数字字符串转换为数字数组。此外,实施是错误的。它没有检查输入是否真的是数字字符串。

def to_i(string)
  string.unpack('C*').reduce(0){|sum, i| sum * 10 + i - 48}
end