Rumah >pembangunan bahagian belakang >Golang >Mampatkan satu kepingan bait ke dalam kepingan lain di Golang
Saya ingin mencapai kebalikan tepat daripada penyelesaian yang diberikan di sini, mampatkan satu serpihan bait ke dalam serpihan bait yang lain -
Tukar []bait yang dimampatkan kepada []kod golang bait yang dimampatkan
Serupa dengan -
func ZipBytes(unippedBytes []byte) ([]byte, error) { // ... }
[Saya akan memuat naik fail zip ini sebagai data borang berbilang bahagian untuk permintaan pos]
Anda boleh menggunakan bytes.buffer
untuk zip terus ke dalam ingatan.
Contoh berikut menggunakan compress/zlib
因为它与问题中给出的示例相反。根据您的用例,您也可以轻松地将其更改为 compress/gzip
(API yang hampir serupa).
package data_test import ( "bytes" "compress/zlib" "io" "testing" ) func compress(buf []byte) ([]byte, error) { var out bytes.Buffer w := zlib.NewWriter(&out) if _, err := w.Write(buf); err != nil { return nil, err } if err := w.Close(); err != nil { return nil, err } return out.Bytes(), nil } func decompress(buf []byte) (_ []byte, e error) { r, err := zlib.NewReader(bytes.NewReader(buf)) if err != nil { return nil, err } defer func() { if err := r.Close(); e == nil { e = err } }() return io.ReadAll(r) } func TestRoundtrip(t *testing.T) { want := []byte("test data") zdata, err := compress(want) if err != nil { t.Fatalf("compress: %v", err) } got, err := decompress(zdata) if err != nil { t.Fatalf("decompress: %v", err) } if !bytes.Equal(want, got) { t.Errorf("roundtrip: got = %q; want = %q", got, want) } }
Atas ialah kandungan terperinci Mampatkan satu kepingan bait ke dalam kepingan lain di Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!