package yu_tencent type tlv struct{} var Tlv tlv func (t tlv) From(buf []byte, tlv uint16, val ...byte) []byte { j_len := len(val) buf = append(buf, byte(tlv>>8), byte(tlv), byte(j_len>>8), byte(j_len)) buf = append(buf, val...) return buf } func (t tlv) FromInt16(buf []byte, tlv uint16, val ...int16) []byte { j_len := len(val) * 2 buf = append(buf, byte(tlv>>8), byte(tlv), byte(j_len>>8), byte(j_len)) for _, j_val := range val { buf = append(buf, byte(j_val>>8), byte(j_val)) } return buf } func (t tlv) FromUint16(buf []byte, tlv uint16, val ...uint16) []byte { j_len := len(val) * 2 buf = append(buf, byte(tlv>>8), byte(tlv), byte(j_len>>8), byte(j_len)) for _, j_val := range val { buf = append(buf, byte(j_val>>8), byte(j_val)) } return buf } func (t tlv) FromInt32(buf []byte, tlv uint16, val ...int32) []byte { j_len := len(val) * 4 buf = append(buf, byte(tlv>>8), byte(tlv), byte(j_len>>8), byte(j_len)) for _, j_val := range val { buf = append(buf, byte(j_val>>24), byte(j_val>>16), byte(j_val>>8), byte(j_val)) } return buf } func (t tlv) FromUint32(buf []byte, tlv uint16, val ...uint32) []byte { j_len := len(val) * 4 buf = append(buf, byte(tlv>>8), byte(tlv), byte(j_len>>8), byte(j_len)) for _, j_val := range val { buf = append(buf, byte(j_val>>24), byte(j_val>>16), byte(j_val>>8), byte(j_val)) } return buf } func (t tlv) FromInt64(buf []byte, tlv uint16, val ...int64) []byte { j_len := len(val) * 8 buf = append(buf, byte(tlv>>8), byte(tlv), byte(j_len>>8), byte(j_len)) for _, j_val := range val { buf = append(buf, byte(j_val>>56), byte(j_val>>48), byte(j_val>>40), byte(j_val>>32), byte(j_val>>24), byte(j_val>>16), byte(j_val>>8), byte(j_val)) } return buf } func (t tlv) FromUint64(buf []byte, tlv uint16, val ...uint64) []byte { j_len := len(val) * 8 buf = append(buf, byte(tlv>>8), byte(tlv), byte(j_len>>8), byte(j_len)) for _, j_val := range val { buf = append(buf, byte(j_val>>56), byte(j_val>>48), byte(j_val>>40), byte(j_val>>32), byte(j_val>>24), byte(j_val>>16), byte(j_val>>8), byte(j_val)) } return buf } func (t tlv) FromB(buf []byte, tlv uint16, val ...[]byte) []byte { var j_len int for _, j_val := range val { j_len += len(j_val) } buf = append(buf, byte(tlv>>8), byte(tlv), byte(j_len>>8), byte(j_len)) for _, j_val := range val { buf = append(buf, j_val...) } return buf } func (t tlv) FromS(buf []byte, tlv uint16, val ...string) []byte { var j_len int for _, j_val := range val { j_len += len(j_val) } buf = append(buf, byte(tlv>>8), byte(tlv), byte(j_len>>8), byte(j_len)) for _, j_val := range val { buf = append(buf, j_val...) } return buf }