将字符串转换为ruby中的数字二进制值

时间:2014-02-10 02:38:06

标签: ruby byte

我是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

2 个答案:

答案 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])}"