我有JRuby(实际上是Apache HBase shell)。 我有很多代表字节的字符串,每个字符都是十六进制数字,每个字节有2个字符。类似的东西:
id = "faed31"
但我需要一系列转义字符:
=> "\xfa\xed1"
任何解决方案?无法谷歌,只对Ruby有一个非常普遍的印象。
答案 0 :(得分:0)
这是实际解决我所有任务的代码,包括想要的输出:
# Convert binary string to hex digits.
def bin_to_hex(s)
s.each_byte.map { |b| b.to_s(16).rjust(2, '0') }.join
end
# Convers hex string to binary string.
def hex_to_bin(s)
s.scan(/../).map { |x| x.hex.chr }.join
end
# HBase special 'convert and print' routine to get hex digits, process them and print.
def print_hex_to_bin(s)
Kernel.print "\"" + Bytes.toStringBinary(s.scan(/../).map { |x| x.hex.chr }.join.to_java_bytes) + "\"\n"
end
主要根据http://anthonylewis.com/2011/02/09/to-hex-and-back-with-ruby/
组成