| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- package udf
- import (
- "encoding/binary"
- "time"
- "golang.org/x/text/encoding/charmap"
- "golang.org/x/text/encoding/unicode"
- "golang.org/x/text/transform"
- )
- func r_u8(b []byte) uint8 {
- return b[0]
- }
- func r_i8(b []byte) int8 {
- return int8(r_u8(b))
- }
- var rl_u64 = binary.LittleEndian.Uint64
- func rl_u48(b []byte) uint64 {
- var buf [8]byte
- copy(buf[:], b[:6])
- return rl_u64(buf[:])
- }
- var rl_u32 = binary.LittleEndian.Uint32
- var rl_u16 = binary.LittleEndian.Uint16
- func rl_i64(b []byte) int64 {
- return int64(rl_u64(b))
- }
- func rl_i32(b []byte) int32 {
- return int32(rl_u32(b))
- }
- func rl_i16(b []byte) int16 {
- return int16(rl_u16(b))
- }
- var rb_u64 = binary.BigEndian.Uint64
- var rb_u32 = binary.BigEndian.Uint32
- var rb_u16 = binary.BigEndian.Uint16
- func rb_u8(b []byte) uint8 {
- return b[0]
- }
- func rb_i64(b []byte) int64 {
- return int64(rb_u64(b))
- }
- func rb_i32(b []byte) int32 {
- return int32(rb_u32(b))
- }
- func rb_i16(b []byte) int16 {
- return int16(rb_u16(b))
- }
- func r_dstring(b []byte, fieldlen int) string {
- if fieldlen == 0 {
- return ""
- }
- return string(b[:b[fieldlen-1]])
- }
- func r_dcharacters(b []byte) string {
- if len(b) == 0 {
- return ""
- }
- switch b[0] {
- case 8:
- s, _, err := transform.Bytes(charmap.Windows1252.NewDecoder(), b[1:])
- if err != nil {
- panic(err)
- }
- return string(s)
- case 16:
- s, _, err := transform.Bytes(unicode.UTF16(unicode.BigEndian, unicode.IgnoreBOM).NewDecoder(), b[1:])
- if err != nil {
- panic(err)
- }
- return string(s)
- default:
- return ""
- }
- }
- func r_timestamp(b []byte) time.Time {
- var t time.Time
- t = t.AddDate(int(rl_u16(b[2:])), int(b[4]), int(b[5]))
- t.Add(time.Duration(b[6])*time.Hour +
- time.Duration(b[7])*time.Minute +
- time.Duration(b[8])*time.Second)
- return t
- }
|