Stavo per utilizzare una lunga stringa per manipolare un numero elevato di bit di bit, mantenendo la stringa dei risultati in Redis. Tuttavia, incappato in un bug php (?). Un byte che contiene i bit 00001101
leggere utilizzando substr()
restituisce un valore imprevisto:Perché il substr.status() cambia il byte di ritorno a capo ASCII?
$bin = 0b00001101; // 13 - ASCII Carriage return
$c = substr($bin, 0, 1); // read this character
printf("Expectation: 00001101, reality: %08b\n", $c); // 00000001
è il presupposto che è sbagliato substr()
binary-safe? Ha anche provato mb_substr()
, impostando la codifica su 8bit
con esattamente lo stesso risultato.
Grazie! Probabilmente ho creato un cattivo esempio/isolamento del problema. Originariamente ho una stringa binaria più lunga, leggendo un particolare byte da essa. Riscriverà l'esempio. – Serge
Vero, ora capisco. Grazie ancora! – Serge