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
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)