// 检测两个区域是否有重叠
BOOL RegionsOverlap(uint64 iStart1, uint64 iEnd1, uint64 iStart2, uint64 iEnd2)
{
return ((iStart2 >= iStart1) && (iStart2 <= iEnd1)) || ((iStart1 >= iStart2) && (iStart1 <= iEnd2));
}
// 获取两个区域之间的交叉区域
BOOL GetIntersection(uint64 iStart1, uint32 iLength1, uint64 iStart2, uint64 iEnd2, uint64 *iIntersectStart, uint32 *iIntersectLength)
{
uint64 iEnd1 = iStart1 + iLength1 - 1;
uint64 iIntersectEnd = (iEnd1 <= iEnd2) ? iEnd1 : iEnd2;
*iIntersectStart = (iStart1 >= iStart2) ? iStart1 : iStart2;
*iIntersectLength = (uint32)((*iIntersectStart > iIntersectEnd) ? 0 : iIntersectEnd + 1 - *iIntersectStart);
if (*iIntersectLength == 0)
{
*iIntersectStart = iStart1;
}
return *iIntersectLength != 0;
}
CnCrypt代码 之 两个比较好用的磁盘边界检查函数
最新推荐文章于 2025-09-10 11:40:53 发布
本文介绍了两个一维区间是否重叠的判断方法,并提供了一个用于计算两个区间交集的具体算法实现。通过这两个函数,可以有效地处理涉及区间操作的问题。
2万+

被折叠的 条评论
为什么被折叠?



