如何在Ruby中将字符转换为位

时间:2018-09-28 03:41:13

标签: ruby binary bit

我只是想知道是否有任何方法或类可以将字符串直接转换为位,例如将'h'转换为'01001000'

更具体地说,是将单词,句子或整个文本文件转换为二进制文本的方法。

我知道有些方法可以给出ascii表中的字符数,例如

'h'.ord #=> 104

但是我正在寻找一种方法,该方法不仅可以将单个字符转换为字符串,还可以将文本文件转换为二进制表示形式。

2 个答案:

答案 0 :(得分:1)

String#ord为您提供了ASCII码。 Integer#to_s将基数作为参数:

"a".ord
=> 97
97.to_s(2)
=> "1100001"

"a".ord.to_s(2)
=> "1100001"

"a".ord.to_s(2).chars.map(&:to_i)
=> [1, 1, 0, 0, 0, 0, 1]
  # ^  ^  ^  ^  ^  ^  ^
  # 64 32 16 8  4  2  1
  #
  # 64 + 32 + 1 = 97

答案 1 :(得分:1)

您可以使用unpack

'hello'.unpack('B*')
#=> ["0110100001100101011011000110110001101111"]
#     ^^^^^^^^
#     01101000 = h