想把payload中字符串的十六进制数据转为十进制数据输出,但是只找到十六进制转二进制的函数(hexstr2bin),请问有没有十六进制转十进制的函数吗?
现在还没有直接的函数可以直接从 hexstr 转换为对应的 Integer;如果是固定位数的 hexstr,可以尝试用 subbits
函数。
例如:
SELECT
payload.pkdt as pkdt,
hexstr2bin(substr(pkdt, 0, 4)) as pkdt_bin,
subbits(pkdt_bin, 1, 32, 'integer', 'signed', 'big') as x_axis
FROM
"t/#"
输入:
{"pkdt": "8200"}
输出:
x_axis: -32256
这里使用了 subbits/6
函数:
- 第一个参数: 指需要转换的二进制,这里是
pkdt_bin
- 第二个参数:开始位置,按比特位算,从 1 开始计算。这里填
1
即从二进制的开头开始 - 第三个参数:长度,按比特位算。这里是
32
即长度为4个字节 - 第四个参数:转换的目标类型,这里为
integer
即整数 - 第五个参数:符号类型,
signed
表示有符合,unsigned
表示无符号 - 第六个参数:字节序,
big
表示大端字节,little
表示小端
感谢,用您提供的方法已成功解决