Usually in these cases it helps to bring up the diff between the bytes: <https://lh3.googleusercontent.com/-SzaoriDYD-c/V43aSOMR1iI/AAAAAAAACKc/ycqDFbZyKcEZEfIB7zavcefLgM97SDzvgCLcB/s1600/gps.png>
So the things I noticed here, * the data definitely is not ASCII * it looks like some GPS protocol, find the spec how to properly parse it. * Go data looks more what I would expect than Python; Python seems to be converting the data into ASCII range, *notice how most of the differences are in bytes higher than 0x80.* So, find the GPS protocol spec and reference application and first implement that. + Egon On Tuesday, 19 July 2016 06:58:58 UTC+3, EdgarAlejandro Vintimilla wrote: > > In GO I get this data > > buf := make([]byte, 1024) > buf: [64 64 153 0 4 50 49 51 71 76 50 48 49 52 48 49 53 49 56 55 0 0 0 0 > 0 16 1 233 24 140 87 64 25 140 87 68 88 10 0 136 2 0 0 182 29 0 0 4 0 0 0 4 > 0 7 100 1 17 19 0 3 0 1 17 7 16 23 43 59 76 94 160 0 244 82 243 16 7 0 0 0 > 0 73 68 68 95 50 49 51 71 48 50 95 83 32 86 50 46 50 46 54 0 73 68 68 95 50 > 49 51 71 48 50 95 72 32 86 50 46 50 46 54 0 13 0 1 24 2 24 1 26 1 30 1 31 2 > 31 3 31 4 31 5 31 6 31 7 31 1 33 2 33 224 55 13 10] []uint8 > > cadena += fmt.Sprintf("%x ", buf[i]) > cadena: 40 40 99 0 4 32 31 33 47 4c 32 30 31 34 30 31 35 31 38 37 0 0 0 0 > 0 10 1 e9 18 8c 57 40 19 8c 57 44 58 a 0 88 2 0 0 b6 1d 0 0 4 0 0 0 4 0 7 > 64 1 11 13 0 3 0 1 11 7 10 17 2b 3b 4c 5e a0 0 f4 52 f3 10 7 0 0 0 0 49 44 > 44 5f 32 31 33 47 30 32 5f 53 20 56 32 2e 32 2e 36 0 49 44 44 5f 32 31 33 > 47 30 32 5f 48 20 56 32 2e 32 2e 36 0 d 0 1 18 2 18 1 1a 1 1e 1 1f 2 1f 3 > 1f 4 1f 5 1f 6 1f 7 1f 1 21 2 21 e0 37 d string > > > and python > > 4040990004323133474c323031343031353138370000000000100111a38d5766a38d57855d0a0000000000c21d0000010000000400076401111e000300011307100331317e4aa000f245f310000000008c4944445f3231334730325f532056322e322e36004944445f3231334730325f482056322e322e36000d0001180218011a011e011f021f031f041f051f061f071f0121022171a40d0a > > > > ------------------------------------------------------------------------------------------------------------------- > On Monday, July 18, 2016 at 1:23:05 AM UTC-5, Egon wrote: >> >> What is the difference in the data that you receive? >> >> On Monday, 18 July 2016 05:42:36 UTC+3, EdgarAlejandro Vintimilla wrote: >>> >>> now I have this, but still not the correct results >>> >>> package main >>> >>> import ( >>> "fmt" >>> "net" >>> "os" >>> //"strconv" >>> //"bytes" >>> //"io/ioutil" >>> //"net/http" >>> "reflect" >>> //"strings" >>> ) >>> >>> const ( >>> CONN_HOST = "" >>> CONN_PORT = "5555" >>> CONN_TYPE = "tcp" >>> ) >>> >>> func main() { >>> // Listen for incoming connections. >>> l, err := net.Listen(CONN_TYPE, CONN_HOST+":"+CONN_PORT) >>> if err != nil { >>> fmt.Println("Error listening:", err.Error()) >>> os.Exit(1) >>> } >>> // Close the listener when the application closes. >>> defer l.Close() >>> fmt.Println("Listening on " + CONN_HOST + ":" + CONN_PORT) >>> for { >>> // Listen for an incoming connection. >>> conn, err := l.Accept() >>> if err != nil { >>> fmt.Println("Error accepting: ", err.Error()) >>> os.Exit(1) >>> } >>> // Handle connections in a new goroutine. >>> go handleRequest(conn) >>> } >>> } >>> >>> // Handles incoming requests. >>> func handleRequest(conn net.Conn) { >>> >>> // Make a buffer to hold incoming data. >>> buf := make([]byte, 1024) >>> >>> // Read the incoming connection into the buffer. >>> reqLen, err := conn.Read(buf) >>> buf = buf[:reqLen] >>> >>> if err != nil { >>> fmt.Println("Error reading:", err.Error()) >>> } >>> >>> var cadena string = "" >>> for i := 0; i < len(buf)-1; i++ { >>> cadena += fmt.Sprintf("%x ", buf[i]) >>> } >>> >>> >>> // Send a response back to person contacting us. >>> conn.Write([]byte( "ok" )) >>> fmt.Println("cadena: ", cadena, reflect.TypeOf(cadena) ) >>> fmt.Println( "\n" ) >>> >>> // Close the connection when you're done with it. >>> conn.Close() >>> >>> } >>> >>> >>> >>> On Sunday, July 17, 2016 at 2:05:22 PM UTC-5, Egon wrote: >>>> >>>> On Sunday, 17 July 2016 21:42:26 UTC+3, EdgarAlejandro Vintimilla wrote: >>>>> >>>>> Hi, I have a GPS that sends me data through a connection TCP >>>>> >>>>> the data it sends me are in ASCII, and I have to convert it to HEX >>>>> >>>>> for example in python I'm doing this >>>>> >>>>> BUFFER_SIZE = 1024 >>>>> conn, addr = s.accept() >>>>> data = conn.recv(BUFFER_SIZE) >>>>> data.encode("hex") >>>>> conn.close() >>>>> print data >>>>> >>>>> and it works. >>>>> >>>>> but in GO, >>>>> >>>>> buf := make([]byte, 1024) >>>>> reqLen, err := conn.Read(buf) >>>>> >>>> >>>> Note, from here you are not using reqLen, you probably should do: >>>> buf = buf[:reqLen], although if the conn is not fast enough you may not >>>> receive the full request. >>>> >>>> >>>>> if err != nil { >>>>> fmt.Println("Error: ", err.Error()) >>>>> } >>>>> >>>>> fmt.Println("buf: ", buf) >>>>> fmt.Println("buf str: ", string(buf)) >>>>> >>>> >>>> this []byte to string conversion assumes that "buf" is encoded as UTF8, >>>> so if you have bytes that are larger than 0x7f you might get bizarre >>>> results. *(Although I know you mentioned ASCII, it might also be >>>> Extended ASCII)* >>>> >>>> >>>>> var str string = "" >>>>> for i:=0; i< len(buf); i++{ >>>>> str += strconv.FormatUint(uint64(buf[i]), 16) >>>>> } >>>>> fmt.Println("str: ", str) >>>>> >>>>> or if I use io, error2 :=ioutil.ReadAll(connection) i do not get the >>>>> exact data that it sends me in any way >>>>> >>>> >>>> data, err := ioutil.ReadAll(conn) >>>> if err != nil { panic(err) } >>>> enc := hex.EncodeToString(data) >>>> fmt.Println("hex:", enc) >>>> >>>> >>>> Also you should be probably reading up to the message sequence not >>>> everything. Protocols usually define some ending character or sequence, or >>>> have a leading length of message. I suspect you should read up-to a >>>> line-feed instead of everything. And also that might be the reason that >>>> you >>>> get different results from Go and Python. >>>> >>>> + Egon >>>> >>> -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.