Dalam pengaturcaraan PHP, kadangkala kita perlu menukar rentetan kepada tatasusunan bait untuk memudahkan pemprosesan data binari. Dalam artikel ini, kami akan menerangkan cara menukar rentetan kepada tatasusunan bait menggunakan PHP.
Fungsi str_split() PHP boleh memisahkan rentetan kepada tatasusunan, dengan setiap elemen ialah satu aksara (kod ASCII). Apabila menggunakan fungsi ini, anda perlu memberi perhatian kepada isu pengekodan aksara. Contohnya, jika rentetan dikodkan UTF-8, setiap aksara Cina biasanya memerlukan 3 bait atau lebih ruang storan.
Berikut ialah contoh kod:
// 定义一个字符串 $str = 'hello world'; // 将字符串转换为字节数组 $bytes = array_map('ord', str_split($str));
Dalam kod di atas, kita mula-mula menentukan rentetan ("hello world"), dan kemudian gunakan fungsi str_split() untuk memisahkannya menjadi tatasusunan. Seterusnya, kami menggunakan fungsi ord() terbina dalam PHP untuk menukar setiap aksara kepada kod ASCII dan menyimpan tatasusunan yang ditukar dalam pembolehubah $bytes.
Fungsi unpack() PHP boleh membongkar data binari ke dalam tatasusunan atau tatasusunan bersekutu dalam format yang ditentukan. Fungsi ini agak berkuasa dan boleh menyokong pembongkaran dalam pelbagai format, seperti struktur dalam bahasa C, dsb.
Berikut ialah contoh kod:
// 定义一个字符串 $str = 'hello world'; // 将字符串转换为字节数组 $bytes = unpack('C*', $str);
Dalam kod di atas, kami mula-mula menentukan rentetan ("hello world") dan kemudian menggunakan fungsi unpack() untuk membongkarnya ke dalam aksara bahasa C jenis ('C'). Akhir sekali, tatasusunan bait yang ditukar disimpan dalam pembolehubah $bytes.
Jika rentetan ialah pengekodan berbilang bait (seperti UTF-8), kaedah di atas mungkin menghasilkan hasil yang salah disebabkan oleh Aksara Bahagian berbilang perkataan perlu dibahagikan mengikut format pengekodannya.
Untuk menyelesaikan masalah ini, anda boleh menggunakan fungsi mb_str_split() untuk mengendalikan rentetan berbilang bait. Fungsi ini serupa dengan fungsi str_split(), tetapi menyokong aksara berbilang bait.
Berikut ialah contoh kod:
// 定义一个多字节字符串 $str = '今天天气真好'; // 将字符串转换为字节数组 $bytes = array_map('ord', mb_str_split($str));
Dalam kod di atas, kami mula-mula menentukan rentetan berbilang bait ("Cuaca baik hari ini") dan kemudian gunakan fungsi mb_str_split() untuk Pisahkan kepada berbilang aksara, dan akhirnya gunakan fungsi ord() untuk menukar setiap aksara kepada kod ASCII, dan simpan tatasusunan yang ditukar dalam pembolehubah $bytes.
Ringkasan
Dalam pengaturcaraan PHP, apabila anda perlu menukar rentetan kepada tatasusunan bait, anda boleh menggunakan kaedah seperti fungsi str_split(), unpack() atau mb_str_split(). Antaranya, memilih kaedah yang sesuai perlu mengambil kira banyak faktor seperti format pengekodan rentetan dan format data binari. Dalam pembangunan sebenar, adalah perlu untuk memilih kaedah yang sesuai berdasarkan keperluan tertentu.
Atas ialah kandungan terperinci php menukar rentetan kepada tatasusunan bait. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!