我正在尝试使用presto将十六进制字符串(以'0x'开头)转换为它的整数值。例如User User action Date and time of action
Lisa Edited 2018-05-20 09:46 AM GMT+2
Tom Edited 2018-05-18 11:18 AM GMT+2
Tom Edited 2018-05-18 10:12 AM GMT+2
Lisa Edited 2018-05-16 13.28 PM GMT+2
Lisa Posted 2018-05-16 13.25 PM GMT+2
到256.我的十六进制字符串称为msg_id。
我试着用这个 -
0x100
但我遇到了一个问题,因为from_hex(substr(msg_id,3))
期望偶数个十六进制数字(from_hex
而不是0100
)。
我决定尝试用100
语句来解决这个问题,所以我尝试了这个:
if
(稍后将处理奇数位数)
但是if(length(msg_id)%2=0, from_hex(substr(msg_id,3)))
的结果是from_hex
类型,具有不同的字节数。我想将它转换为整数或任何其他数字类型,但我找不到办法。
有什么想法吗?我很感激...
答案 0 :(得分:1)
您可以使用import logging
import logzero
from logzero import logger
from sense_hat import SenseHat
import os
import ephem
dir_path = os.path.dirname(os.path.realpath(__file__))
sh = SenseHat()
logzero.logfile(dir_path+"/iss.csv")
name = "ISS (ZARYA)"
line1 = "1 25544U 98067A 18032.92935684 .00002966 00000-0 52197-4 0 99911 25544U 98067A 18032.92935684 .00002966 00000-0 52197-4 0 9991"
line2 = "2 25544 51.6438 332.9972 0003094 62.2964 46.0975 15.54039537 97480"
iss = ephem.readtle(name, line1, line2)
iss.compute()
formatter = logging.Formatter('%(name)s - %(asctime)-15s - %(levelname)s: %(message)s');
logzero.formatter(formatter)
sublat = iss.sublat
sublong = iss.sublong
logger.info("%s,%s", sublong, sublat, )
将用十六进制数字书写的数字解析为from_base(string, radix)
。您只需要先去除前导bigint
:
'0x'
或
select from_base(substr('0x100', 3), 16);
_col0
-------
256