印度包网
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

471 lines
9.0 KiB

package util
import (
"bytes"
"encoding/binary"
"strconv"
)
func ToFloat32(v interface{}) float32 {
switch v.(type) {
case string:
f, _ := strconv.ParseFloat(v.(string), 32)
return float32(f)
case []byte:
var f float32
bytesBuffer := bytes.NewBuffer(v.([]byte))
_ = binary.Read(bytesBuffer, binary.BigEndian, &f)
return f
case int:
return float32(v.(int))
case int8:
return float32(v.(int8))
case int16:
return float32(v.(int16))
case int32:
return float32(v.(int32))
case int64:
return float32(v.(int64))
case uint8:
return float32(v.(uint8))
case uint16:
return float32(v.(uint16))
case uint32:
return float32(v.(uint32))
case uint64:
return float32(v.(uint64))
case float32:
return v.(float32)
case float64:
return float32(v.(float64))
default:
return 0
}
}
func ToFloat64(v interface{}) float64 {
switch v.(type) {
case string:
f, _ := strconv.ParseFloat(v.(string), 64)
return f
case []byte:
var f float64
bytesBuffer := bytes.NewBuffer(v.([]byte))
_ = binary.Read(bytesBuffer, binary.BigEndian, &f)
return f
case int:
return float64(v.(int))
case int8:
return float64(v.(int8))
case int16:
return float64(v.(int16))
case int32:
return float64(v.(int32))
case int64:
return float64(v.(int64))
case uint:
return float64(v.(uint))
case uint8:
return float64(v.(uint8))
case uint16:
return float64(v.(uint16))
case uint32:
return float64(v.(uint32))
case uint64:
return float64(v.(uint64))
case float32:
return float64(v.(float32))
case float64:
return v.(float64)
default:
return 0
}
}
func ToInt(v interface{}) int {
switch v.(type) {
case string:
i, _ := strconv.Atoi(v.(string))
return i
case []byte:
var i int
bytesBuffer := bytes.NewBuffer(v.([]byte))
_ = binary.Read(bytesBuffer, binary.BigEndian, &i)
return i
case int:
return v.(int)
case int8:
return int(v.(int8))
case int16:
return int(v.(int16))
case int32:
return int(v.(int32))
case int64:
return int(v.(int64))
case uint8:
return int(v.(uint8))
case uint16:
return int(v.(uint16))
case uint32:
return int(v.(uint32))
case uint64:
return int(v.(uint64))
case float32:
return int(v.(float32))
case float64:
return int(v.(float64))
default:
return 0
}
}
func ToUint(v interface{}) uint {
switch v.(type) {
case string:
i, _ := strconv.Atoi(v.(string))
return uint(i)
case []byte:
var i int
bytesBuffer := bytes.NewBuffer(v.([]byte))
_ = binary.Read(bytesBuffer, binary.BigEndian, &i)
return uint(i)
case int:
return uint(v.(int))
case int8:
return uint(v.(int8))
case int16:
return uint(v.(int16))
case int32:
return uint(v.(int32))
case int64:
return uint(v.(int64))
case uint:
return v.(uint)
case uint8:
return uint(v.(uint8))
case uint16:
return uint(v.(uint16))
case uint32:
return uint(v.(uint32))
case uint64:
return uint(v.(uint64))
case float32:
return uint(v.(float32))
case float64:
return uint(v.(float64))
default:
return 0
}
}
func ToInt8(v interface{}) int8 {
switch v.(type) {
case string:
i, _ := strconv.ParseInt(v.(string), 10, 8)
return int8(i)
case []byte:
var i int8
bytesBuffer := bytes.NewBuffer(v.([]byte))
_ = binary.Read(bytesBuffer, binary.BigEndian, &i)
return i
case int:
return int8(v.(int))
case int8:
return v.(int8)
case int16:
return int8(v.(int16))
case int32:
return int8(v.(int32))
case int64:
return int8(v.(int64))
case uint:
return int8(v.(uint))
case uint8:
return int8(v.(uint8))
case uint16:
return int8(v.(uint16))
case uint32:
return int8(v.(uint32))
case uint64:
return int8(v.(uint32))
case float32:
return int8(v.(float32))
case float64:
return int8(v.(float64))
default:
return 0
}
}
func ToUint8(v interface{}) uint8 {
switch v.(type) {
case string:
i, _ := strconv.ParseInt(v.(string), 10, 8)
return uint8(i)
case []byte:
var i int8
bytesBuffer := bytes.NewBuffer(v.([]byte))
_ = binary.Read(bytesBuffer, binary.BigEndian, &i)
return uint8(i)
case int:
return uint8(v.(int))
case int8:
return uint8(v.(int8))
case int16:
return uint8(v.(int16))
case int32:
return uint8(v.(int32))
case int64:
return uint8(v.(int64))
case uint:
return uint8(v.(uint))
case uint8:
return v.(uint8)
case uint16:
return uint8(v.(uint16))
case uint32:
return uint8(v.(uint32))
case uint64:
return uint8(v.(uint64))
case float32:
return uint8(v.(float32))
case float64:
return uint8(v.(float64))
default:
return 0
}
}
func ToInt16(v interface{}) int16 {
switch v.(type) {
case string:
i, _ := strconv.ParseInt(v.(string), 10, 16)
return int16(i)
case []byte:
var i int16
bytesBuffer := bytes.NewBuffer(v.([]byte))
_ = binary.Read(bytesBuffer, binary.BigEndian, &i)
return i
case int:
return int16(v.(int))
case int8:
return int16(v.(int8))
case int16:
return v.(int16)
case int32:
return int16(v.(int32))
case int64:
return int16(v.(int64))
case uint:
return int16(v.(uint))
case uint8:
return int16(v.(uint8))
case uint16:
return int16(v.(uint16))
case uint32:
return int16(v.(uint32))
case uint64:
return int16(v.(uint64))
case float32:
return int16(v.(float32))
case float64:
return int16(v.(float64))
default:
return 0
}
}
func ToUint16(v interface{}) uint16 {
switch v.(type) {
case string:
i, _ := strconv.ParseInt(v.(string), 10, 16)
return uint16(i)
case []byte:
var i int16
bytesBuffer := bytes.NewBuffer(v.([]byte))
_ = binary.Read(bytesBuffer, binary.BigEndian, &i)
return uint16(i)
case int:
return uint16(v.(int))
case int8:
return uint16(v.(int8))
case int16:
return uint16(v.(int16))
case int32:
return uint16(v.(int32))
case int64:
return uint16(v.(int64))
case uint:
return uint16(v.(uint))
case uint8:
return uint16(v.(uint8))
case uint16:
return v.(uint16)
case uint32:
return uint16(v.(uint32))
case uint64:
return uint16(v.(uint64))
case float32:
return uint16(v.(float32))
case float64:
return uint16(v.(float64))
default:
return 0
}
}
func ToInt32(v interface{}) int32 {
switch v.(type) {
case string:
i, _ := strconv.ParseInt(v.(string), 10, 32)
return int32(i)
case []byte:
var i int32
bytesBuffer := bytes.NewBuffer(v.([]byte))
_ = binary.Read(bytesBuffer, binary.BigEndian, &i)
return i
case int:
return int32(v.(int))
case int8:
return int32(v.(int8))
case int16:
return int32(v.(int16))
case int32:
return v.(int32)
case int64:
return int32(v.(int64))
case uint:
return int32(v.(uint))
case uint8:
return int32(v.(uint8))
case uint16:
return int32(v.(uint16))
case uint32:
return int32(v.(uint32))
case uint64:
return int32(v.(uint64))
case float32:
return int32(v.(float32))
case float64:
return int32(v.(float64))
default:
return 0
}
}
func ToUint32(v interface{}) uint32 {
switch v.(type) {
case string:
i, _ := strconv.ParseInt(v.(string), 10, 32)
return uint32(i)
case []byte:
var i int32
bytesBuffer := bytes.NewBuffer(v.([]byte))
_ = binary.Read(bytesBuffer, binary.BigEndian, &i)
return uint32(i)
case int:
return uint32(v.(int))
case int8:
return uint32(v.(int8))
case int16:
return uint32(v.(int16))
case int32:
return uint32(v.(int32))
case int64:
return uint32(v.(int64))
case uint:
return uint32(v.(uint))
case uint8:
return uint32(v.(uint8))
case uint16:
return uint32(v.(uint16))
case uint32:
return v.(uint32)
case uint64:
return uint32(v.(uint64))
case float32:
return uint32(v.(float32))
case float64:
return uint32(v.(float64))
default:
return 0
}
}
func ToInt64(v interface{}) int64 {
switch v.(type) {
case string:
i, _ := strconv.ParseInt(v.(string), 10, 64)
return i
case []byte:
var i int64
bytesBuffer := bytes.NewBuffer(v.([]byte))
_ = binary.Read(bytesBuffer, binary.BigEndian, &i)
return i
case int:
return int64(v.(int))
case int8:
return int64(v.(int8))
case int16:
return int64(v.(int16))
case int32:
return int64(v.(int32))
case int64:
return v.(int64)
case uint:
return int64(v.(uint))
case uint8:
return int64(v.(uint8))
case uint16:
return int64(v.(uint16))
case uint32:
return int64(v.(uint32))
case uint64:
return int64(v.(uint64))
case float32:
return int64(v.(float32))
case float64:
return int64(v.(float64))
default:
return 0
}
}
func ToUint64(v interface{}) uint64 {
switch v.(type) {
case string:
i, _ := strconv.ParseInt(v.(string), 10, 64)
return uint64(i)
case []byte:
var i int64
bytesBuffer := bytes.NewBuffer(v.([]byte))
_ = binary.Read(bytesBuffer, binary.BigEndian, &i)
return uint64(i)
case int:
return uint64(v.(int))
case int8:
return uint64(v.(int8))
case int16:
return uint64(v.(int16))
case int32:
return uint64(v.(int32))
case int64:
return uint64(v.(int64))
case uint:
return uint64(v.(uint))
case uint8:
return uint64(v.(uint8))
case uint16:
return uint64(v.(uint16))
case uint32:
return uint64(v.(uint32))
case uint64:
return v.(uint64)
case float32:
return uint64(v.(float32))
case float64:
return uint64(v.(float64))
default:
return 0
}
}