我需要将二进制转换为十六进制。问题与下面链接中提到的问题非常相似,但我需要使用java而不是node.js - Converting mongodb Binary _id to LUUID using node
列值是二进制base64,表示为Hive中的数据类型字符串。 “AAGOBh3pqkWvtaK8AO2U9w ==”。 所需的十六进制输出 - '00018e06-1de9-aa45-afb5-a2bc00ed94f7'
我正在用Java创建一个Hive UDF来进行这种转换,我正在研究Hive 1.0版本。我想表示(不转换)此字符串“AAGOBh3pqkWvtaK8AO2U9w ==”作为base64以进一步转换为十六进制。
与上述链接中的node.js示例类似 - var hex = new Buffer(bin,'base64')。toString('hex');
但是base64似乎没有效果。
如果没有Hive UDF,有没有办法做到这一点?如果没有,我们如何将字符串列表示(不转换)为base64列。
感谢您的帮助!!
答案 0 :(得分:0)
我建议您使用Apache Common Codec 你的字符串看起来像一个base64字符串。
在 Java 中,使用:
while (isdigit(c = peekchar())){
参考This
在 JavaScript 中,使用:
String data = "AAGOBh3pqkWvtaK8AO2U9w==";
byte[] bytesOfBase64 = Base64.decodeBase64(data);
String hexString = Hex.encodeHexString(bytesOfBase64);
System.out.println(hexString);
参考This: