1

次のコードがあります。

foreach(str_split('abcd') as $char) {
    $total += ($char & 1);
}
echo $total;

を出力します0。ただし、ASCII バイナリ表現ではとが奇数であるため (97 と 99 だと思います)、2が出力されることを期待します。ac

に何を渡してもstr_split、常に になるよう0です。これはなぜですか?また、最初のビットが設定されている文字列内のバイトを正しくカウントするにはどうすればよいですか?

4

1 に答える 1

1

最初にASCIIコードを取得する必要があります.あなたのコードはそれを行いません.

<?php
foreach(str_split('abcd') as $char) {
    $char=ord($char);  //Missed this?
    $total += ($char & 1);
}
echo $total;  // Outputs 2

?>
于 2013-03-13T15:41:16.400 に答える