【发布时间】:2012-10-29 04:32:37
【问题描述】:
在某些 PHP 中,我需要比较两个字符串,但仅限于位掩码中设置为 1 的位。我将如何实现这样的行为?
我试过了:
$string1='aaabbb';
$string2='ababbb';
$bitmask='101101';
function compare($string1, $string2, $bitmask){
$resultBitmask=(~($string1 ^ $string2)|~$bitmask);
}
为了清楚起见,我在位掩码中将ff 字节写为1 以进行说明。当生成位掩码时,它们实际上是十六进制的ff。 0 也是空字节。
每次调用函数时,字符串和位掩码的长度总是不同的。我设法获得了一组位进行比较,但由于长度不同,我无法检查它们是否都已设置。目前,我一直在使用 preg_match 和匹配任意数量的 ff 字节的正则表达式,但有没有更优雅的解决方案?
编辑:由于字符串的长度不超过 4096 位,因此它们无法转换为数字。
【问题讨论】:
-
我认为您必须将它们转换为数字。
-
@jarchuleta 我愿意,但它们最多可达 4 KB。
-
你可能会找到大量的图书馆。或者一次将它们转换一个字节然后比较。
-
@jarchuleta 该代码完全可移植到可能没有庞大数字库的 Web 主机。至于第二个想法,你能补充一个完整的答案吗?