java中的hiveudf-从二进制到十六进制的转换

2lpgd968  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(467)

我需要把二进制转换成十六进制。这个问题与下面链接中提到的问题非常相似,但我需要使用java而不是node.js—使用node将mongodb binary\u id转换为luuid
列值是二进制base64,在配置单元中表示为数据类型字符串。“aagobh3pqkwvtak8ao2u9w==”。所需的十六进制输出-“00018e06-1de9-aa45-afb5-a2bc00ed94f7”
我正在用java创建一个hiveudf来进行转换,我正在开发hive1.0版本。我想将这个字符串“aagobh3pqkwvtak8ao2u9w==”表示为base64(而不是转换),以便进一步转换为十六进制。
类似于上面链接中的node.js示例-var hex=new buffer(bin,'base64').tostring('hex');
但是base64似乎并不有效。
有没有一种方法可以不用hive-udf?如果不是,我们如何将字符串列表示(不转换)为base64列。
谢谢你的帮助!!

oyt4ldly

oyt4ldly1#

我建议您使用apache公共编解码器您的字符串看起来像base64字符串。
在java中,使用:

String data = "AAGOBh3pqkWvtaK8AO2U9w==";
byte[] bytesOfBase64 = Base64.decodeBase64(data);
String hexString = Hex.encodeHexString(bytesOfBase64);
System.out.println(hexString);

引用此
在javascript中,使用:

function base64toHEX(base64) {

  var raw = atob(base64);

  var HEX = '';

  for ( i = 0; i < raw.length; i++ ) {

    var _hex = raw.charCodeAt(i).toString(16)

    HEX += (_hex.length==2?_hex:'0'+_hex);

  }
  return HEX.toUpperCase();

}

console.log(base64toHEX("AAGOBh3pqkWvtaK8AO2U9w=="));

请参考:

相关问题