請注意,紅寶石1。9將在十六進制表示檢查不可打印的字符:
3.chr # => "\x03"
更令人困惑的是,有時串會出現在的Unicode(UTF-8):
"\003" # => "\u0003" (utf-8)
3.chr.encoding # => #<Encoding:US-ASCII>
"\003".encoding # => #<Encoding:UTF-8>
"\003" == 3.chr # => true (this is strange because the encoding is different)
如果你想了解如何這些八進制和六角串涉及十進制數,可以將它們轉換成二進制:
"\003".unpack('B*') # same as "\003".ord.to_s(2)
# => ["00000011"] # the 2 least significant bits are set
2.to_s(2) # convert to base 2
#=> "10"
表達3 & 2
是位與二進制編號爲11b和10b,這將產生10b(因爲對於最高有效位,1是1; 1 & 0對於最不重要的)。
其他轉換:
'%x' % 97 # => '61' hex
0x61 # => 97 decimal from raw hex input
'%o' % 97 # => '141' octal
0141 # => 97 decimal from raw octal input
這有點臨陣磨槍,但你或許應該谷歌更深入的信息。
感謝您的回答,正是我想要的:) – Markus1189