qq_笑_17
坐标存储在切片的末尾,两者都有 8 个字节,它们是浮点数的IEEE 754 双精度表示的小端编码字节。您可以使用该encoding/binary包来获取坐标的浮点数据作为uint64,并且您可以使用math.Float64frombits()该数据“转换”为float64类型。这是您可以解码它们的方法:data := []byte{0, 0, 0, 0, 1, 1, 0, 0, 0, 35, 161, 45, 231, 82, 140, 27, 64, 28, 39, 133, 121, 143, 248, 83, 64}d := binary.LittleEndian.Uint64(data[9:])x := math.Float64frombits(d)d = binary.LittleEndian.Uint64(data[17:])y := math.Float64frombits(d)fmt.Println(x, y)这将输出(在Go Playground上尝试):6.887035 79.883757您的数据的开头可能是 SRID(空间参考标识符)和/或某种搜索距离/精度,取决于您使用的数据库。io.Reader或者,您可以使用从切片创建读数bytes.NewReader(),并使用以下binary.Read()功能:data := []byte{0, 0, 0, 0, 1, 1, 0, 0, 0, 35, 161, 45, 231, 82, 140, 27, 64, 28, 39, 133, 121, 143, 248, 83, 64}r := bytes.NewReader(data[9:])var x, y float64if err := binary.Read(r, binary.LittleEndian, &x); err != nil { panic(err)}if err := binary.Read(r, binary.LittleEndian, &y); err != nil { panic(err)}fmt.Println(x, y)这将输出相同的内容。在Go Playground上试试这个。