Ruby将不可打印的字符转换为数字

我有一个包含不可打印字符的字符串。

我目前正在做的是用波浪号代替它们:

string.gsub!(/^[:print:]]/, "~") 

但是,我实际上想将它们转换为整数值。

我试过这个,但总是输出0

 string.gsub!(/[^[:print:]]/, "#{$1.to_i}") 

思考?

String#gsub , String#gsub! 接受可选块。 块的返回值用于替换。

 "\x01Hello\x02".gsub(/[^[:print:]]/) { |x| x.ord } # => "1Hello2" 

如果您只需要输出带有不可打印字符的字符串来记录或进行调试, Object#inspect也是一个选项。

 puts "\x01Hello\x02".inspect # => "\u0001Hello\u0002"