如何在 Ruby 中将字符转换为位
How to turn characters to bits in Ruby
我只是想知道有没有什么方法或者class可以直接把字符串变成位,比如'h'
变成'01001000'
。
更具体地说,是一种将单词、句子或整个文本文件转换为二进制文本的方法。
我知道有一些方法可以给出 ascii table 中字符的编号,例如
'h'.ord #=> 104
但我正在寻找一种方法,不仅可以将单个字符,还可以将字符串和可能的文本文件直接转换为二进制表示形式。
String#ord
gives you the ascii code. 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
您可以使用 unpack
:
'hello'.unpack('B*')
#=> ["0110100001100101011011000110110001101111"]
# ^^^^^^^^
# 01101000 = h
我只是想知道有没有什么方法或者class可以直接把字符串变成位,比如'h'
变成'01001000'
。
更具体地说,是一种将单词、句子或整个文本文件转换为二进制文本的方法。
我知道有一些方法可以给出 ascii table 中字符的编号,例如
'h'.ord #=> 104
但我正在寻找一种方法,不仅可以将单个字符,还可以将字符串和可能的文本文件直接转换为二进制表示形式。
String#ord
gives you the ascii code. 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
您可以使用 unpack
:
'hello'.unpack('B*')
#=> ["0110100001100101011011000110110001101111"]
# ^^^^^^^^
# 01101000 = h