我重新实现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_i
和pack
来实现unpack
。
答案 0 :(得分:0)
pack
/ unpack
这里唯一能做的就是将数字字符串转换为数字数组。此外,实施是错误的。它没有检查输入是否真的是数字字符串。
def to_i(string)
string.unpack('C*').reduce(0){|sum, i| sum * 10 + i - 48}
end