tcp client-server byte type-conversion go

tcp - Cómo convertir de[] byte a int en Go Programming



client-server type-conversion (4)

(volviendo a publicar esta respuesta )

Puede usar ByteOrder codificación / binario para hacer esto para tipos de 16, 32 y 64 bits

Play

package main import "fmt" import "encoding/binary" func main() { var mySlice = []byte{244, 244, 244, 244, 244, 244, 244, 244} data := binary.BigEndian.Uint64(mySlice) fmt.Println(data) }

Necesito crear un ejemplo de cliente-servidor sobre TCP. En el lado del cliente leo 2 números y los envío al servidor. El problema al que me enfrenté es que no puedo convertir de []byte a int , porque la comunicación solo acepta datos de tipo []byte .

¿Hay alguna forma de convertir []byte a int o puedo enviar int al servidor?

Algún código de muestra será realmente apreciado.

Gracias.


A partir de una matriz de bytes, puede usar el paquete binario para realizar las conversiones.

Por ejemplo, si quieres leer ints:

buf := bytes.NewBuffer(b) // b is []byte myfirstint, err := binary.ReadVarint(buf) anotherint, err := binary.ReadVarint(buf)

El mismo paquete permite la lectura de int o flotantes sin signo, con los pedidos de bytes deseados, usando la función de Read general.


Para codificar / decodificar números a / desde secuencias de bytes, está el paquete de codificación / binario . Hay ejemplos en la documentación: vea la sección de Ejemplos en la tabla de contenido.

Estas funciones de codificación operan en io.Writer interfaces de io.Writer . El tipo net.TCPConn implementa io.Writer, por lo que puede escribir / leer directamente en las conexiones de red.

Si tiene un programa Go en cualquier lado de la conexión, es posible que desee ver el uso de la encoding/gob . Vea el artículo " Gobs of data " para un tutorial sobre el uso de gob (omita al final para ver un ejemplo autónomo).


var bs []byte value, _ := strconv.ParseInt(string(bs), 10, 64)