Ruby 从字符串解析字节码?

Ruby 从字符串解析字节码?,ruby,Ruby,我遇到的情况是,我接收的字节码字符串如下所示: "\\x00\\x00\\xff\n" "\x00\x00\xff".bytes # => [ 0, 0, 255 ] 其中字节码中的\已转义。我真的想拿一根这样的绳子: "\\x00\\x00\\xff\n" 然后从中获取字节,就像我对这个字符串所做的那样: "\\x00\\x00\\xff\n" "\x00\x00\xff".bytes # => [ 0, 0, 255 ] 我怎样才能更好地处理那根绳子 它是通过UDP从另

我遇到的情况是,我接收的字节码字符串如下所示:

"\\x00\\x00\\xff\n"
"\x00\x00\xff".bytes # => [ 0, 0, 255 ]
其中字节码中的
\
已转义。我真的想拿一根这样的绳子:

"\\x00\\x00\\xff\n"
然后从中获取字节,就像我对这个字符串所做的那样:

"\\x00\\x00\\xff\n"
"\x00\x00\xff".bytes # => [ 0, 0, 255 ]
我怎样才能更好地处理那根绳子


它是通过UDP从另一个系统发送的,因此我实际上只能像它到达时的混乱转义字符串一样访问它。

可能有一种更优雅的方式,但这应该让您开始:

a= "\\x00\\x00\\xff\n"
a.scan(/\\x([0-9a-f][0-9a-f])/).flatten.collect{|x| x.to_i(16)}  # =>  [ 0, 0, 255 ]
to.i(16)
将从十六进制字符串转换为十进制字符串

看起来你想对转义序列进行插值

我知道这可以使用eval来完成,但是不要。我认为也可以通过YAML完成

eval("\"#{a}\"").strip.bytes.to_a # => [ 0, 0, 255]  # don't use this.

只是希望在这里得到更好的答案。

UDP对字符串的格式没有影响。它在交付可靠性方面有很大的不同,但内容保证与发送的内容相同。我想我是在试图为不可避免的评论“为什么你首先有这样的字符串”辩护,所以我把我的借口放在了前面。