给定一个整数 - 比如x=20
,我想将其转换为包含其转义八进制字符的字符串。即...
x=20
# y = ... Some magic
p y # => "\024"
我设法得到的最接近的是:
x.to_s(8) # => "24"
但是,我完全不知道如何将此字符串转换为转义的八进制字符!任何想法,互联网?
答案 0 :(得分:1)
只需使用Kernel#sprintf
格式化数字。
喜欢这个
x = 20
y = sprintf('\%03o', x)
puts y
<强>输出强>
\024
<强>更新强>
也许我误解了你。如果您只想要一个具有给定代码点的角色,那么只需使用Integer#chr
。
喜欢这个
x = 20
y = x.chr
p y
<强>输出强>
"\x14"
答案 1 :(得分:0)
您可以使用Array#pack
:
[20].pack("C") #=> "\x14"
答案 2 :(得分:-1)
x = 20
y = '\%03o' % x
puts y
如果您使用 p 显示 y ,您会看到2个反斜杠,因为 p 输出ruby可解析字符串。