monchickey

package module
v1.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 20, 2020 License: Apache-2.0 Imports: 14 Imported by: 0

README

gomonchickey - go语言实现的工具库

go version: 1.13
example code
package main

import (
    "fmt"
    "time"

    "github.com/zengzhiying/gomonchickey"
)

type Coordinate monchickey.Coordinate

func PolygonContain(pointSet []Coordinate, p Coordinate) (int, error) {
    newPointSet := make([]monchickey.Coordinate, len(pointSet))
    for i, c := range pointSet {
        newPointSet[i] = monchickey.Coordinate(c)
    }
    return monchickey.PolygonContain(newPointSet, monchickey.Coordinate(p))
}

func main() {
    nowTimestamp := time.Now().Unix()
    nowTimeStr := monchickey.TimestampToString(nowTimestamp, "2006-01-02 15:04:05")
    fmt.Println(nowTimeStr)

    numSeq := []uint8{72, 101, 108, 108, 111, 32, 109, 111, 110, 99, 104, 105, 99, 107, 101, 121, 33}
    raw := monchickey.Uint8ToBytes(numSeq)
    fmt.Println(string(raw))
    fmt.Println(monchickey.Base64Encode(raw))

    geoHash, err := monchickey.GeohashEncode(113.56291, 36.9271, 12)
    if err != nil {
        fmt.Println(err)
    } else {
        fmt.Println("(113.56291, 36.9271) geohash Encode:", geoHash)
    }
    longitude, latitude, err := monchickey.GeohashDecode(geoHash)
    if err == nil {
        fmt.Println(geoHash, "Decode:(", longitude, latitude, ")")
    }

    pointSet := []Coordinate{
        Coordinate{1, 1},
        Coordinate{1, 4},
        Coordinate{4, 4},
        Coordinate{4, 1},
    }

    fmt.Println("Polygon: (1,1)-(1,4)-(4,4)-(4,1): ")
    v, _ := PolygonContain(pointSet, Coordinate{1, 1})
    fmt.Println("  (1, 1) in", v)  // 边上
    v, _ = PolygonContain(pointSet, Coordinate{2, 2})
    fmt.Println("  (2, 2) in", v)  // 内部
    v, _ = PolygonContain(pointSet, Coordinate{5, 1})
    fmt.Println("  (5, 1) in", v)  // 外部
}


output:
2020-02-23 15:05:55
Hello monchickey!
SGVsbG8gbW9uY2hpY2tleSE=
(113.56291, 36.9271) geohash Encode: ww8f04mgzw75
ww8f04mgzw75 Decode:( 113.56290997937322 36.92709996365011 )
Polygon: (1,1)-(1,4)-(4,4)-(4,1):
(1, 1) in 0
(2, 2) in 1
(5, 1) in -1

Documentation

Index

Constants

View Source
const (
	MAX_LON = 180
	MIN_LON = -180
	MAX_LAT = 90
	MIN_LAT = -90
)

经纬度范围

Variables

This section is empty.

Functions

func Base64Decode

func Base64Decode(encodedData string) ([]byte, error)

base64解码

func Base64Encode

func Base64Encode(data []byte) string

base64编码

func ByteToFloat16

func ByteToFloat16(high, low byte) float64

两个字节转float16的数值表示 返回值: float64 对应float16表示的浮点数

func BytesToUint16BigEndian added in v1.2.0

func BytesToUint16BigEndian(bs []byte) ([]uint16, error)

解包二进制数组为uint16切片[大端]

func BytesToUint16LittleEndian added in v1.2.0

func BytesToUint16LittleEndian(bs []byte) ([]uint16, error)

解包二进制数组为uint16切片[小端]

func EncodeToHex

func EncodeToHex(src []byte) string

编码二进制为hex格式的字符串

func Float32PackLittleEndian added in v1.3.0

func Float32PackLittleEndian(f float32) []byte

float32小端方式打包为字节数组

func Float32UnpackLittleEndian added in v1.3.0

func Float32UnpackLittleEndian(v []byte) float32

float32小端方式解包

func Float64PackLittleEndian added in v1.3.0

func Float64PackLittleEndian(f float64) []byte

float64小端方式打包为字节数组

func Float64UnpackLittleEndian added in v1.3.0

func Float64UnpackLittleEndian(v []byte) float64

float64小端方式解包

func GeohashDecode

func GeohashDecode(encoded string) (longitude, latitude float64, err error)

geohash解码函数 encoded: hash编码后的字符串, 长度: 1-12 returns: 经度, 纬度, 错误信息

func GeohashEncode

func GeohashEncode(longitude, latitude float64, precision int) (string, error)

geohash编码函数 longitude: 经度 latitude: 纬度 precision: 精度, 范围: 1-12 returns: geohash编码后的字符串, 错误信息

func GetFileModifyTime

func GetFileModifyTime(filename string) string

获得文件的修改时间, 返回字符串示例: 2019-01-01 11:11:00 当文件不存在或出错时返回空字符串

func GetUint32Bit

func GetUint32Bit(num uint32, index uint8) (value uint8, err error)

获取uint32指定位的值, index从高位到低位: 1 - 32

func GetUint64Bit

func GetUint64Bit(num uint64, index uint8) (value uint8, err error)

获取uint64指定位的值 index从高位到低位依次为: 1 - 64

func GetYamlConfig

func GetYamlConfig(configFile string, configs interface{}) error

加载yaml配置文件 configFile: 配置文件路径; configs: 结构体指针, 注意是传地址

func GobDeserialize

func GobDeserialize(filePath string, content interface{}) error

将gob内容反序列化为数据 filePath: 文件绝对路径 content: 接收返回内容的指针

func GobSerialize

func GobSerialize(filePath string, content interface{}) error

将指定内容以gob方式序列化到文件 特殊数据类型需要提前注册 filePath: 文件绝对路径

func HexDecode

func HexDecode(s string) ([]byte, error)

解码hex为二进制数组

func Int64Abs added in v1.2.0

func Int64Abs(v int64) int64

计算数字的绝对值, int64类型

func IntArrayContain

func IntArrayContain(arr []int, v int) bool

判断整数切片中是否包含元素

func IntervalIntersection added in v1.2.0

func IntervalIntersection(x1, y1, x2, y2 int64) (left, right int64, err error)

计算区间[x1, y1]和[x2, y2]的交集区间 比如: [-1, 6]与[2, 8]返回: [2, 6], error为nil 如果重合在1点, 比如[3,5]与[5,7], 则返回: [5,5] 如果区间没有交集, 则error不为nil

func MD5Digest

func MD5Digest(data []byte) []byte

md5摘要计算, 返回为md5后的二进制, 长度为16

func MD5HexDigest

func MD5HexDigest(data []byte) string

md5摘要计算, 返回md5后的16进制字符串, 长度为32

func PathIsDir

func PathIsDir(path string) bool

判断path是不是目录

func PathIsExist

func PathIsExist(path string) bool

判断文件或目录是不是存在

func PathIsFile

func PathIsFile(path string) bool

判断path是不是文件

func PolygonContain added in v1.1.0

func PolygonContain(pointSet []Coordinate, p Coordinate) (int, error)

判断点是否在多边形内 pointSet: 按照切片的顺序依次连成闭合多边形 比如N = 4, 则0->1, 1->2, 2->3, 3->0, 依次连成4个边 p: 要判断多边形是否包含该点 p在多边形内返回1, p在多边形边上返回0, 在多边形外返回-1; 同时err为nil 当传入错误的数据时, 会返回err

func SetUint32Bit

func SetUint32Bit(num *uint32, index, value uint8) (err error)

设置uint32指定位的值 index是从高位到低位, 范围: 1 - 32

func SetUint64Bit

func SetUint64Bit(num *uint64, index, value uint8) (err error)

设置uint64指定位的值 index是从高位到低位, index依次为: 1 - 64

func StringToTimestamp

func StringToTimestamp(timeAsStr, timeFormat string) (int64, error)

字符串格式的时间转时间戳, 注意: 按照本地时区进行转换 返回: 转换成功error为nil, 返回时间戳, 单位为s; 转换失败error不为nil

func TimeZoneStringToTimestamp

func TimeZoneStringToTimestamp(timeAsStr, timeFormat, timeZone string) (int64, error)

按照指定的时区转换时间戳, 比如: UTC - UTC时间, Asia/Shanghai - 东八区时间

func TimestampToString

func TimestampToString(timestamp int64, timeFormat string) string

unix时间戳转时间字符串 timestamp: 时间戳, 单位: s timeFormat: 格式化方式, 例如: "2006-01-02 15:04:05"

func Uint16PackBigEndian added in v1.2.0

func Uint16PackBigEndian(v uint16) []byte

uint16大端打包

func Uint16PackLittleEndian added in v1.2.0

func Uint16PackLittleEndian(v uint16) []byte

uint16小端打包

func Uint16ToBytesBigEndian added in v1.2.0

func Uint16ToBytesBigEndian(seq []uint16) []byte

打包uint16序列为二进制序列[大端]

func Uint16ToBytesLittleEndian added in v1.2.0

func Uint16ToBytesLittleEndian(seq []uint16) []byte

打包uint16序列为二进制序列[小端]

func Uint16Transform

func Uint16Transform(value, defaultValue int) int

校验int是否在uint16范围内 校验通过返回value, 否则返回defaultValue默认值

func Uint16UnpackBigEndian added in v1.2.0

func Uint16UnpackBigEndian(b []byte) uint16

uint16大端解包

func Uint16UnpackLittleEndian added in v1.2.0

func Uint16UnpackLittleEndian(b []byte) uint16

uint16小端解包

func Uint32PackBigEndian added in v1.2.0

func Uint32PackBigEndian(v uint32) []byte

uint32大端打包

func Uint32PackLittleEndian added in v1.2.0

func Uint32PackLittleEndian(v uint32) []byte

uint32小端打包

func Uint32UnpackBigEndian added in v1.2.0

func Uint32UnpackBigEndian(b []byte) uint32

uint32大端解包

func Uint32UnpackLittleEndian added in v1.2.0

func Uint32UnpackLittleEndian(b []byte) uint32

uint32小端解包

func Uint64PackBigEndian added in v1.2.0

func Uint64PackBigEndian(v uint64) []byte

uint64数字大端方式打包字节流

func Uint64PackLittleEndian added in v1.2.0

func Uint64PackLittleEndian(num uint64) []byte

uint64数字小端方式打包字节流

func Uint64UnpackBigEndian added in v1.2.0

func Uint64UnpackBigEndian(b []byte) uint64

从字节数组大端方式解包uint64

func Uint64UnpackLittleEndian added in v1.2.0

func Uint64UnpackLittleEndian(b []byte) uint64

小端方式解包字节数组为uint64数字

func Uint8ToBytes

func Uint8ToBytes(seq []uint8) []byte

打包uint8序列为二进制序列

func Uint8Transform

func Uint8Transform(value, defaultValue int) int

校验int是否在uint8范围内 校验通过返回value, 否则返回defaultValue默认值

func XXHashSum64

func XXHashSum64(data []byte) uint64

xxhash 64 计算, 返回uint64的整数

Types

type Coordinate added in v1.1.0

type Coordinate struct {
	X int
	Y int
}

type GeneralParameter added in v1.1.0

type GeneralParameter struct {
	A int
	B int
	C int
}

方程一般式结构体

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL