給定一個整數 - 比方說,x=20
,我想將其轉換爲包含其轉義八進制字符的字符串。即...將int轉換爲八進制字符
x=20
# y = ... Some magic
p y # => "\024"
我已經成功地得到最接近的是通過使用:
x.to_s(8) # => "24"
不過,我完全stumpted如何這個字符串轉換成八進制轉義字符!任何想法,互聯網?
給定一個整數 - 比方說,x=20
,我想將其轉換爲包含其轉義八進制字符的字符串。即...將int轉換爲八進制字符
x=20
# y = ... Some magic
p y # => "\024"
我已經成功地得到最接近的是通過使用:
x.to_s(8) # => "24"
不過,我完全stumpted如何這個字符串轉換成八進制轉義字符!任何想法,互聯網?
只需使用Kernel#sprintf
格式化數字。
像這樣
x = 20
y = sprintf('\%03o', x)
puts y
輸出
\024
更新
也許我誤解你了。如果你只想要一個具有給定代碼點的字符,那麼就使用Integer#chr
。
喜歡這個
x = 20
y = x.chr
p y
輸出
"\x14"
你可以使用Array#pack
:
[20].pack("C") #=> "\x14"
x = 20
y = '\%03o' % x
puts y
如果使用p顯示Ÿ你會看到2個反斜線p輸出紅寶石可解析字符串。
作爲感謝地注意到的頂級答案,我幼稚的年輕的自己並沒有準確地指出這個問題:我期望的輸出中的單個反斜槓並不是一個錯誤;我真的很想''\ 024「'。 –
正如我現在知道的,正確的答案只是使用'x.chr' - 或者一個更「通用」的解決方案來解決問題(你是否需要它)是(謹慎的)做:'eval「? \\#{x.to_s(8)}「'或者'eval」?\\ x#{x.to_s(16)}「'。 –
'「\ 024」.b'表示爲'「\ x14」',你想要做什麼? – Stefan
好吧,那麼我怎樣才能將20轉換成「\ x14」?再次,我只知道如何將它轉換爲「14」。 –
我試圖做一些低級別的數據包操作,這需要我輸入某些字段作爲它們的八進制值。 –