繁体   English   中英

如何在Redshift中将十六进制数转换为二进制?

[英]How do I convert a hexadecimal number into binary in Redshift?

我正在尝试将十六进制数字转换为二进制。 我一直找不到能够正常工作的redshift函数。

我已经尝试了以下两个功能:

选择strtol('4D',2)&选择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

\n

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

\n

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM