【问题标题】:Converting a string to its numeric binary value in ruby在ruby中将字符串转换为其数字二进制值
【发布时间】:2014-02-10 02:38:06
【问题描述】:

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

【问题讨论】:

    标签: ruby byte


    【解决方案1】:

    你正在寻找String#ord方法:

    #                   ⇓⇓⇓
    puts "#{freq.at(buf.ord)}"
    

    【讨论】:

      【解决方案2】:

      您可以执行以下任一操作:--

      1)  puts "#{freq.at(buf.ord)}"
      
      2) puts "#{freq.at(buf.unpack('C')[0])}"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-02
        • 1970-01-01
        • 2021-02-24
        相关资源
        最近更新 更多