如何在红移中将十六进制数转换为二进制



我正在尝试将十六进制数转换为二进制。我无法找到可以工作的红移功能。

我尝试了以下两个功能:

选择 strtol('4D',2( & select to_binary('4D'(

(to_binary函数不存在,但to_hex存在(

我也尝试过寻找python UDF,但没有运气。

例:如果我将十六进制 4D 转换为二进制,我希望01001101

这是一个 UDF 来做同样的事情

create function hex_to_bin(h varchar)
returns varchar immutable as $$
    return bin(int(h,16))[2:]
$$ language plpythonu;
select hex_to_bin('4D');
hex_to_bin
1001101

更新:带有前导零的新版本。需要第二个参数来指定输出的长度

create or replace function hex_to_bin(h varchar, number_of_bits int)
returns varchar immutable as $$
    return bin(int(h,32))[2:].zfill(number_of_bits)
$$ language plpythonu;
select hex_to_bin('4D',10);
hex_to_bin
0010001101

dec = int('4D', 16); print("in Binary =",bin(dec))

最新更新