You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中通过strtoi实现SQL式十六进制区域标志的重叠计算?

在R中实现SQL式的区域标志重叠计算

问题出在你误用了R的&运算符——这是逻辑与,和SQL里的按位与完全不是一回事。当两个转换后的整数都不为0时,逻辑与就会返回TRUE,完全不反映实际的位运算结果。

要实现和SQL一致的重叠判断,你需要用R内置的bitwAnd()函数执行按位与运算,再通过结果判断重叠情况:

示例1:验证区域完全包含

library(R.utils)

area1 <- strtoi("090A", 16L)
area2 <- strtoi("3BFF", 16L)
overlap <- bitwAnd(area1, area2)

# 若按位与结果等于area1,说明area1完全包含于area2
overlap == area1  # 返回TRUE,和SQL结果一致

示例2:验证无重叠

area3 <- strtoi("0400", 16L)
area4 <- strtoi("2025", 16L)
overlap <- bitwAnd(area3, area4)

# 若按位与结果为0,说明两个区域无重叠
overlap == 0  # 返回TRUE,和SQL结果一致

补充:其实base R自带的strtoi()也支持十六进制转换,无需依赖R.utils,用法为strtoi("090A", base=16),效果完全相同。

内容的提问来源于stack exchange,提问作者chrisjacques

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 07:52:21