Dalam PHP, menukar rentetan kepada tatasusunan bait ialah operasi yang sangat berguna. Tatasusunan bait amat penting apabila bekerja dengan data binari. Dalam artikel ini, kita akan melihat dengan lebih dekat cara menukar rentetan PHP kepada tatasusunan bait.
1. Apakah tatasusunan bait?
Tatasusunan bait, tatasusunan yang terdiri daripada bait, ialah format yang digunakan untuk mewakili data. Dalam PHP, setiap aksara diwakili oleh satu atau lebih bait. Oleh itu, rentetan boleh dilihat sebagai tatasusunan bait.
2. Bagaimana untuk menukar rentetan kepada tatasusunan bait?
Dalam PHP, kita boleh menukar rentetan kepada tatasusunan bait dalam dua cara.
1. Gunakan fungsi str_split()
Fungsi str_split() boleh memisahkan rentetan kepada tatasusunan mengikut panjang yang ditentukan, dan setiap elemen ialah rentetan yang sama panjang.
Berikut ialah kod sampel yang menggunakan fungsi str_split() untuk menukar rentetan kepada tatasusunan bait:
$str = 'Hello world!'; $bytes = str_split($str);
Anasusunan $bytes di sini menyimpan aksara yang sepadan bagi setiap aksara dalam $ rentetan str nilai kod ASCII. Jika kita ingin menukar elemen dalam tatasusunan $bytes kepada format heksadesimal, kita boleh menggunakan fungsi dechex().
Berikut ialah kod untuk menukar elemen dalam tatasusunan $bytes kepada format heksadesimal:
foreach ($bytes as $byte) { $hex[] = dechex(ord($byte)); }
Dalam kod di atas, kami menggunakan fungsi ord() untuk menukar setiap aksara kepada ASCII yang sepadan nilai kod, dan gunakan fungsi dechex() untuk menukarnya kepada format perenambelasan.
2. Gunakan fungsi unpack()
Fungsi unpack() boleh menukar rentetan binari kepada tatasusunan, di mana setiap elemen ialah nilai perpuluhan bagi bait yang sepadan dalam rentetan.
Berikut ialah contoh kod untuk menukar rentetan kepada tatasusunan bait menggunakan fungsi unpack():
$str = 'Hello world!'; $bytes = unpack('C*', $str);
Dalam kod di atas, kami telah menggunakan fungsi unpack() dan aksara 'C' . Aksara ini menunjukkan bahawa setiap bait dianggap sebagai aksara yang tidak ditandatangani. Selain itu, '*' bermaksud membaca semua data binari.
3. Bagaimana untuk menukar tatasusunan bait kepada rentetan?
Kita boleh menggunakan fungsi implode() untuk menukar tatasusunan bait kepada rentetan. Di bawah ialah contoh kod untuk menukar tatasusunan $bytes kepada rentetan menggunakan fungsi implode():
$str = implode('', array_map('chr', $bytes));
Dalam kod di atas, kami telah menggunakan fungsi array_map() dan fungsi chr(). Fungsi array_map() mengambil setiap elemen (iaitu nilai bait) dalam tatasusunan $bytes sebagai parameter fungsi chr() dan menukarkan setiap nilai bait kepada aksara ASCII. Akhir sekali, gunakan fungsi implode() untuk menggabungkan semua aksara ke dalam rentetan.
4. Bagaimana untuk menguji prestasi menukar rentetan kepada tatasusunan bait?
Menukar rentetan kepada tatasusunan bait ialah operasi biasa dan kami perlu menguji prestasinya untuk memastikan kecekapannya.
Berikut ialah ujian mudah, yang boleh digunakan untuk menguji prestasi menukar rentetan kepada tatasusunan bait:
$testData = str_repeat('a', 1024 * 1024); $times = 100; $start = microtime(true); for ($i = 0; $i < $times; $i++) { $bytes = unpack('C*', $testData); } $end = microtime(true); echo 'Time per loop: ' . (1000 * ($end - $start) / $times) . 'ms';
Dalam kod di atas, kami menggunakan fungsi str_repeat() untuk menjana Rentetan saiz 1MB dan tukarkannya kepada tatasusunan bait. Kami kemudian menggelungkan operasi ini 100 kali dan mengeluarkan masa yang diperlukan untuk setiap gelung.
Menurut keputusan ujian, pada mesin saya (MacBook Pro, 2.7GHz Intel Core i5, 8GB RAM), purata masa berjalan operasi ini ialah 7~8 milisaat.
Atas ialah kandungan terperinci Tukar rentetan php kepada tatasusunan bait. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!