Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menukar rentetan kepada tatasusunan bait (bait) dalam golang

Bagaimana untuk menukar rentetan kepada tatasusunan bait (bait) dalam golang

PHPz
PHPzasal
2023-03-22 14:22:374797semak imbas

Bahasa Go ialah bahasa pengaturcaraan yang baru muncul dan cekap yang digunakan secara meluas dalam pelbagai bidang, terutamanya pembangunan bahagian pelayan. Antaranya, pemprosesan rentetan adalah bahagian penting dalam bahasa Go. Artikel ini akan memperkenalkan cara menukar rentetan kepada tatasusunan bait (bait), iaitu rentetan golang kepada bait.

  1. Apakah tatasusunan bait?

Dalam bahasa Go, tatasusunan bait (bait) ialah tatasusunan yang terdiri daripada siri integer. Setiap integer sepadan dengan aksara, dan aksara ini diwakili oleh aksara yang sepadan dengan integer dalam jadual kod ASCII. Oleh itu, tatasusunan bait boleh dianggap sebagai tatasusunan yang terdiri daripada pengekodan aksara, yang boleh digunakan dalam pelbagai senario pemprosesan rentetan.

  1. Kaedah untuk menukar rentetan kepada bait

Bahasa Go menyediakan dua kaedah untuk menukar rentetan kepada tatasusunan bait: satu melalui penukaran Jenis dilaksanakan, dan satu lagi dilaksanakan melalui fungsi dalam perpustakaan standard.

(1) Kaedah penukaran jenis

Dalam bahasa Go, rentetan ialah jenis tidak boleh ubah, yang terdiri daripada rentetan aksara. Byte ialah jenis pembolehubah, yang terdiri daripada satu siri integer. Oleh itu, kita boleh menukar jenis rentetan kepada jenis bait melalui penukaran jenis, iaitu:

str := "hello world"
bytes := []byte(str)

Dalam kod di atas, kita mula-mula menentukan rentetan str, dan kemudian menggunakan kaedah []byte(str) kepada Ia ditukar kepada tatasusunan baitbytes. Perlu diingatkan bahawa tatasusunan bait ialah jenis boleh ubah dan ia boleh diubah suai.

(2) Kaedah penukaran fungsi

Selain penukaran jenis, bahasa Go juga menyediakan banyak fungsi perpustakaan standard untuk menukar rentetan kepada tatasusunan bait. Fungsi yang paling biasa digunakan ialah fungsi []byte dan string, yang masing-masing boleh menukar rentetan kepada tatasusunan bait dan tatasusunan bait kepada rentetan.

str := "hello world"
bytes := []byte(str)
str2 := string(bytes)

Dalam kod di atas, kita mula-mula menukar rentetan str menjadi tatasusunan bait bytes, dan kemudian menukar tatasusunan bait kepada rentetan string(bytes) melalui str2. Perlu diingat bahawa kaedah ini hanya berfungsi dengan pengekodan ASCII Jika rentetan mengandungi aksara lain yang dikodkan, aksara bercelaru mungkin muncul.

  1. Aplikasi penukaran rentetan dan tatasusunan bait

Menukar rentetan kepada tatasusunan bait ialah operasi asas dalam bahasa Go, ia bukan sahaja boleh digunakan untuk penukaran antara rentetan dan tatasusunan bait, tetapi juga boleh digunakan dalam pelbagai senario pemprosesan rentetan. Mari kita lihat beberapa senario aplikasi biasa:

(1) Pemisahan tatasusunan bait

Tatasusunan bait boleh dianggap sebagai jujukan yang terdiri daripada beberapa integer. Oleh itu, kita boleh membahagi tatasusunan bait kepada berbilang tatasusunan kecil dengan melintasinya:

str := "hello"
bytes := []byte(str)
chunks := [][]byte{}
chunkSize := 2
for i := 0; i < len(bytes); i += chunkSize {
    end := i + chunkSize
    if end > len(bytes) {
        end = len(bytes)
    }
    chunk := bytes[i:end]
    chunks = append(chunks, chunk)
}
fmt.Println(chunks)

Dalam kod di atas, kami mentakrifkan rentetan str dan tatasusunan bait bytes, Kemudian bahagikan tatasusunan bait bytes menjadi susunan kecil bersaiz 2. Akhir sekali, kami menyimpan semua tatasusunan kecil dalam tatasusunan 2D chunks dan mencetaknya.

(2) Rentetan mampat

Kita boleh memampatkan rentetan ke dalam tatasusunan bait untuk mencapai kesan mampatan. Prinsip pemampatan adalah untuk menggantikan aksara yang sama dalam rentetan dengan nilai kiraan dan aksara. Contohnya, rentetan aaabcc boleh dimampatkan menjadi tatasusunan bait []byte{3, 97, 1, 98, 2, 99}, yang mewakili bahawa terdapat 3 ‘a’, 1 ‘b’ dan 2 ‘c’ dalam rentetan.

str := "aaabcc"
outBytes := []byte{}
currentChar := str[0]
currentCount := 1
for i := 1; i < len(str); i++ {
    if str[i] == currentChar {
        currentCount += 1
    } else {
        outBytes = append(outBytes, byte(currentCount), byte(currentChar))
        currentChar = str[i]
        currentCount = 1
    }
}
outBytes = append(outBytes, byte(currentCount), byte(currentChar))
fmt.Println(outBytes)

Dalam kod di atas, kami mentakrifkan rentetan str dan tatasusunan bait kosong outBytes, dan kemudian ikuti algoritma pemampatan di atas untuk memampatkan rentetan str ke dalam tatasusunan baitoutBytes. Akhir sekali, kami mencetak tatasusunan bait termampat.

  1. Ringkasan

Dalam bahasa Go, menukar rentetan kepada tatasusunan bait ialah operasi asas, yang boleh digunakan dalam pelbagai pemprosesan rentetan A senario. Dalam artikel ini, kami memperkenalkan dua kaedah untuk menukar rentetan kepada tatasusunan bait: penukaran jenis dan penukaran fungsi. Selain itu, kami juga memperkenalkan beberapa senario aplikasi tatasusunan bait, seperti pemisahan tatasusunan bait dan pemampatan rentetan. Perlu diingatkan bahawa tatasusunan bait hanya sesuai untuk pengekodan ASCII Jika rentetan mengandungi aksara lain yang dikodkan, aksara bercelaru mungkin muncul.

Atas ialah kandungan terperinci Bagaimana untuk menukar rentetan kepada tatasusunan bait (bait) dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn