В някои PHP трябва да сравня два низа, но само върху битовете, които са зададени като един в битовата маска. Как бих приложил подобно поведение?
Опитах:
$string1='aaabbb';
$string2='ababbb';
$bitmask='101101';
function compare($string1, $string2, $bitmask){
$resultBitmask=(~($string1 ^ $string2)|~$bitmask);
}
За по-голяма яснота записах ff
байта като 1
в битовата маска с илюстративна цел. Те всъщност биха били ff
в шестнадесетичен, когато се генерира битова маска. Същото важи и за 0
като нулеви байтове.
Низът и битовата маска винаги са с различна дължина при всяко извикване на функцията. Успях да получа набор от битове за сравнение, но не мога да проверя дали всички са настроени, тъй като обективите се различават. Понастоящем използвам preg_match
с регулярен израз, който съответства на произволен брой ff
байта, но има ли по-елегантно решение?
Редактиране: Тъй като низовете са с произволна дължина до 4096 бита, те не могат да бъдат преобразувани в числа.