Hive Impala CONV功能不一致地将BASE-16转换为BASE-2

Hive Impala CONV功能不一致地将BASE-16转换为BASE-2,hive,binary,hex,cloudera,impala,Hive,Binary,Hex,Cloudera,Impala,我需要将十六进制字符串转换为Base-2二进制字符串,但我无法让Impala一致地执行 例如 我希望这一声明: select conv('0020008000',16,2) union select conv('000006040A',16,2); 返回: 0000 0000 0010 0000 0000 0000 1000 0000 0000 0000 0000 0000 0000 0000 0000 0110 0000 0100 0000 1010 然而,它正在返回: 0000 0000

我需要将十六进制字符串转换为Base-2二进制字符串,但我无法让Impala一致地执行

例如

我希望这一声明:

select conv('0020008000',16,2) union
select conv('000006040A',16,2);
返回:

0000 0000 0010 0000 0000 0000 1000 0000 0000 0000
0000 0000 0000 0000 0000 0110 0000 0100 0000 1010
然而,它正在返回:

0000 0000 0010 0000 0000 0000 1000 0000 0000 0000
                          1100 0000 1000 0001 010
第一个十六进制值转换正确,但第二个十六进制值缺少前21位(全零)


有人能解释为什么会发生这种情况,以及我如何修复这种行为吗?

黑斑羚/Hive将多个前导零视为冗余并对其进行修剪。我不确定是否可以打开/关闭此行为。我使用lpad函数解决了这个问题