如何在hbase shell(JRuby)中将十六进制数字字符串转换为带有十六进制字节转义的字符串

时间:2015-02-25 12:46:35

标签: string shell hbase jruby

我有JRuby(实际上是Apache HBase shell)。 我有很多代表字节的字符串,每个字符都是十六进制数字,每个字节有2个字符。类似的东西:

id = "faed31"

但我需要一系列转义字符:

=> "\xfa\xed1"

任何解决方案?无法谷歌,只对Ruby有一个非常普遍的印象。

1 个答案:

答案 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/

组成