如何将边界框十六进制值转换为整数?
How to convert a boundary box hexa value to integer?
这是一个 XML 文件,我想在其中使用 python 获取边界框坐标。可以看到在十六进制字符串中有一个包含 (x1,y1,x2,y2) 的 BBox 属性。
我使用 python 解析边界框信息,但问题是如何将这个 16 位十六进制值转换为我们熟悉的人类可读整数值,将其视为对象边界坐标值。
我使用了 int('hex str', 16)
但它给出了一个很大的整数值,这显然不像 800x1200 大小图像的坐标值。在这种情况下,BBox 的第一个值为“4074145c00000005”,我在转换后得到 4644359501095370757.
请给我一个解决方案,如何将这个边界框坐标转换为人类可以理解的整数值。
最后我得到了将这个 16 位十六进制字符串转换为人类可理解的 decimal/integer 值的解决方案。此值表示使用 enter link description here 中解释的 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 和 !
符号用于指示字节 Order.There 是 5 字节顺序 @, =, <, >, !
用来表示我需要转换的格式。
这是一个 XML 文件,我想在其中使用 python 获取边界框坐标。可以看到在十六进制字符串中有一个包含 (x1,y1,x2,y2) 的 BBox 属性。
我使用 python 解析边界框信息,但问题是如何将这个 16 位十六进制值转换为我们熟悉的人类可读整数值,将其视为对象边界坐标值。
我使用了 int('hex str', 16)
但它给出了一个很大的整数值,这显然不像 800x1200 大小图像的坐标值。在这种情况下,BBox 的第一个值为“4074145c00000005”,我在转换后得到 4644359501095370757.
请给我一个解决方案,如何将这个边界框坐标转换为人类可以理解的整数值。
最后我得到了将这个 16 位十六进制字符串转换为人类可理解的 decimal/integer 值的解决方案。此值表示使用 enter link description here 中解释的 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 和 !
符号用于指示字节 Order.There 是 5 字节顺序 @, =, <, >, !
用来表示我需要转换的格式。