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

myss37ts  于 2021-06-09  发布在  Hbase
关注(0)|答案(1)|浏览(740)

我有jruby(实际上是apachehbase shell)。我有很多代表字节的字符串,每个字符都是十六进制数字,每个字节2个字符。比如:

id = "faed31"

但我需要一串转义字符:

=> "\xfa\xed1"

有什么解决办法吗?谷歌失败了,对ruby的印象非常笼统。

k0pti3hp

k0pti3hp1#

以下代码实际解决了我的所有任务,包括所需的输出:


# 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/

相关问题