1

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

x=20

# y = ... Some magic

p y # => "\024"

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

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

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

4

3 回答 3

2

只需用于Kernel#sprintf格式化数字。

像这样

x = 20
y = sprintf('\%03o', x)

puts y

输出

\024

更新

也许我误解了你。如果您只想要一个具有给定代码点的字符,那么只需使用Integer#chr.

像这样

x = 20
y = x.chr

p y

输出

"\x14"
于 2013-10-16T16:29:59.537 回答
0

你可以使用Array#pack

[20].pack("C")  #=> "\x14"
于 2013-10-16T16:20:28.897 回答
-1
x = 20

y = '\%03o' % x

puts y

如果您使用p显示y,您会看到 2 个反斜杠,因为p输出 ruby​​ 可解析字符串。

于 2015-03-01T00:10:50.087 回答