Проблемы с побитовыми операторами PHP -Преобразование в Coldfusion

Попытка выяснить, что именно это делает и как преобразовать его в Coldfusion Tags:

$result |= ord($built{$i}) ^ ord($signature{$i});

Я думаю, что я близко

<cfset result = BitOr(ASC(built[i]),ASC(ARGUMENTS.signature[i])) />

  1. Я знаю = неправильно, но я не могу найти в документации PHP, что именно |= делается.
  2. built а также signature являются строками, а PHP-код использует {$i} и я не понимаю почему.
  3. Не уверен если BitOr правильно или если я должен использовать одну из других функций.

Кто-нибудь хочет подтвердить, что я делаю, и дать понять, где я могу пойти не так?

1

Решение

Попробуй это:

<cfset result = BitOr(result, BitXor(ASC(built[i]),ASC(ARGUMENTS.signature[i]))) />

^ является оператором xor, а не оператором или. Кроме того, в PHP (и куче других языков), x |= y означает так же, как x = x | y (а также x += y означает так же, как x = x + y и так далее).

1

Другие решения

Других решений пока нет …