我是ruby的新手,我正在尝试编写一个简单的ruby程序,该程序从文件中读取1个字节的块,并生成一个频率列表,显示每个块看到的次数。但是,首先,我只是尝试使用我读入的1个字节来索引与每个可能的字节值对应的256字节数组。
问题似乎是to_i函数不会根据二进制值转换字符,即'A'变为0而不是它的ascii编码65.是否有一些内置于ruby中的其他函数我可以在这里使用?
freq = Array(0..255)
File.open('temp.dat') do |file|
until file.eof?
buf = file.read(1)
puts "#{freq.at(buf.to_i)}"
end
end
答案 0 :(得分:1)
您正在寻找String#ord
方法:
# ⇓⇓⇓
puts "#{freq.at(buf.ord)}"
答案 1 :(得分:0)
您可以执行以下任一操作: -
1) puts "#{freq.at(buf.ord)}"
2) puts "#{freq.at(buf.unpack('C')[0])}"