[英]Hive UDF in Java - Conversion from binary to hexadecimal
我需要將二進制轉換為十六進制。 該問題與以下鏈接中提到的問題非常相似,但我需要使用Java而不是node.js-使用node將mongodb Binary _id轉換為LUUID
列值是二進制的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列。
謝謝你的幫助!!
我建議您使用Apache Common Codec。您的字符串看起來像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=="));
參考此 :
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.