首页 > 解决方案 > 如何将边界框六进制值转换为整数?

问题描述

这是一个 XML 文件,我想在其中使用 python 获取边界框坐标。您可以看到有一个 BBox 属性,其中包含 (x1,y1,x2,y2) 的十六进制字符串。

这是一个 XML 文件,我想在其中使用 python 获取边界框坐标。 您可以看到有一个 BBox 属性,其中包含 (x1,y1,x2,y2) 的十六进制字符串。

我使用 python 解析边界框信息,但问题是如何将这个 16 位十六进制值转换为人类可读的整数值,我们熟悉将其视为对象边界坐标值。

在此处输入图像描述

我用过int('hex str', 16),但它给出了一个很大的整数值,这显然不像 800x1200 尺寸图像的坐标值。在这种情况下,BBox 的第一个值是“4074145c00000005”,我在转换 4644359501095370757 后得到。

请给我一个解决方案,如何将此边界框坐标转换为人类可以理解的整数值。

标签: pythoninthexconverters

解决方案


最后,我得到了将这个 16 位十六进制字符串转换为人类可以理解的十进制/整数值的解决方案。此值表示使用 IEEE 784 标准转换,在此处输入链接描述中进行了说明。这个 16 位十六进制值用于表示浮点转换以获得更准确的坐标位置。

tab = ['0000000000000000', '408a500000000000', '4082980000000000', '0000000000000000']
int_val = [int(struct.unpack('!d', str(t).decode('hex'))[0]) for t in tab]
print "convert to int : ", int_val

struct.unpack(format, buffer)用于转换的函数有两个参数。第一个参数用于格式!d,这d意味着 C 中的 Double 或 python 中的 float 和!符号用于指示字节顺序。有 5 个字节顺序@, =, <, >, !用于表示我需要转换的格式。


推荐阅读