Ich würde eine lange Zeichenfolge verwenden, um eine große Anzahl von Bitflags zu manipulieren, wobei die Ergebniszeichenfolge in Redis bleibt. Stolperte jedoch über einen PHP-Bug (?). Ein Byte, das Bits enthält 00001101
mit substr()
gibt einen unerwarteten Wert zu lesen:Warum ändert PHP substr() das ASCII Wagenrücklaufbyte?
$bin = 0b00001101; // 13 - ASCII Carriage return
$c = substr($bin, 0, 1); // read this character
printf("Expectation: 00001101, reality: %08b\n", $c); // 00000001
Ist die Annahme, dass substr()
binary safe falsch ist? Auch versucht mb_substr()
, Codierung auf 8bit
mit genau dem gleichen Ergebnis einstellen.
Dank! Wahrscheinlich habe ich ein schlechtes Beispiel/Isolation des Problems erstellt. Ursprünglich habe ich eine längere binäre Zeichenkette und lese ein bestimmtes Byte daraus. Wird das Beispiel umschreiben. – Serge
Stimmt, jetzt verstehe ich es. Danke noch einmal! – Serge