मैं रेडिस में परिणाम स्ट्रिंग को रखते हुए, बड़ी संख्या में बिट झंडे में हेरफेर करने के लिए एक लंबी स्ट्रिंग का उपयोग करने जा रहा था। हालांकि, एक php बग (?) पर ठोकर खाई।PHP substr() ASCII कैरिज रिटर्न बाइट क्यों बदलता है?
$bin = 0b00001101; // 13 - ASCII Carriage return
$c = substr($bin, 0, 1); // read this character
printf("Expectation: 00001101, reality: %08b\n", $c); // 00000001
धारणा substr()
बाइनरी सुरक्षित गलत है है: एक बाइट कि बिट्स substr()
का उपयोग करके पढ़ा 00001101
शामिल एक अप्रत्याशित मान देता है? mb_substr()
भी कोशिश की, उसी परिणाम के साथ 8bit
पर एन्कोडिंग सेटिंग।
धन्यवाद देना चाहिए! शायद मैंने समस्या का एक बुरा उदाहरण/अलगाव बनाया है। मूल रूप से मेरे पास एक बाइनरी स्ट्रिंग है, जो इससे एक विशेष बाइट पढ़ रही है। उदाहरण को फिर से लिखना होगा। – Serge
सच है, अब मुझे यह मिल गया है। एक बार फिर धन्यवाद! – Serge