Per insegnare a me stesso Go Sto costruendo un server semplice che accetta un input, esegue un po 'di elaborazione e invia l'output al client (che include l'input originale).Rimozione dei caratteri NULL dai byte
L'input può variare in lunghezza da circa 5 - 13 caratteri + linee di fine e in qualsiasi altra guff il client invia.
L'input viene letto in una matrice di byte e quindi convertito in una stringa per l'elaborazione. Un'altra stringa viene aggiunta a questa stringa e il tutto viene riconvertito in una matrice di byte per essere rispedito al client.
Il problema è che l'input è riempito con un gruppo di caratteri NUL e non sono sicuro di come eliminarli.
Così ho potuto scorrere l'array e quando arrivo a un carattere nul, nota la lunghezza (n), crea un nuovo array di byte di quella lunghezza e copia i primi n caratteri sul nuovo array di byte e usa quella. È il modo migliore, o c'è qualcosa per renderlo più facile per me?
Alcuni Codice ridotta:
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()
Anche se sto facendo qualsiasi altra cosa, ovviamente, stupido qui sarebbe bello sapere.
Grazie. Penso di averlo provato ma non sembra funzionare con \ 0, che suppongo fosse il mio problema. –
@Knyght: sì, perché, '\ 0' è una sequenza di escape illegale (controlla le [specifiche] (http://golang.org/ref/spec#octal_byte_value)). si deve usare '\ 000': http://play.golang.org/p/KP8WLyfUB- – zzzz
@zzzz - ho un Dim Buffer() As Byte. quindi per questo Buffer = byte.Trim (Buffer, "\ x00") byte mostra errore in VB.net – picnic4u