将int转换为转义的八进制字符

时间:2013-10-16 15:59:44

标签: ruby int type-conversion octal

给定一个整数 - 比如x=20,我想将其转换为包含其转义八进制字符的字符串。即...

x=20

# y = ... Some magic

p y # => "\024"

我设法得到的最接近的是:

x.to_s(8) # => "24"

但是,我完全不知道如何将此字符串转换为转义的八进制字符!任何想法,互联网?

3 个答案:

答案 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可解析字符串。