Nauczyć się Go Buduję prosty serwer, który pobiera dane wejściowe, przetwarza i wysyła dane wyjściowe do klienta (który zawiera oryginalne dane wejściowe).Usuwanie znaków NUL z bajtów
Dane wejściowe mogą mieć długość od około 5 do 13 znaków + linie końcowe i inne komunikaty wysyłane przez klienta.
Dane wejściowe są odczytywane do tablicy bajtów, a następnie przekształcane na ciąg znaków w celu przetworzenia. Do tego ciągu dołączany jest inny ciąg znaków, a cała rzecz jest przekształcana z powrotem w tablicę bajtów, aby odesłać ją do klienta.
Problem polega na tym, że dane wejściowe zawierają wiele znaków NUL i nie jestem pewien, jak się ich pozbyć.
Mogę więc przechodzić przez tablicę i kiedy dojdę do znaku nul, zanotuj długość (n), utwórz nową tablicę bajtów o tej długości i skopiuj pierwsze n znaków do nowej tablicy bajtów i użyj że. Czy to najlepszy sposób, czy jest coś, co ułatwi mi to?
Niektóre okrojona Kod:
data := make([]byte, 16)
c.Read(data)
s := strings.Replace(string(data[:]), "an", "", -1)
s = strings.Replace(s, "\r", "", -1)
s += "some other string"
response := []byte(s)
c.Write(response)
c.close()
Także jeśli robię coś innego oczywiście głupi tutaj byłoby miło wiedzieć.
Dzięki. Myślę, że próbowałem tego, ale nie działało z \ 0, co moim zdaniem było moim problemem. –
@Knata: tak, ponieważ '\ 0' jest nielegalną sekwencją ucieczki (sprawdź [specyfikację] (http://golang.org/ref/spec#octal_byte_value)). trzeba użyć '\ 000': http://play.golang.org/p/KP8WLyfUB- – zzzz
@zzzz - mam Dim Buffer() jako Byte. więc dla tego Bufor = bajty.Trim (Bufor, "\ x00") bajtów pokazuje błąd w VB.net – picnic4u