package ber func UnmarshalLen(b []byte) (i, n int) { if b[0]&0x80 == 0 { return int(b[0]), 1 } n = int(b[0] & 0x7f) for k := n; k > 0; k-- { i += int(b[k]) << uint((k-1)*8) } return i, n + 1 } func lenLen(i int) (n int) { for i > 255 { n++ i >>= 8 } return n + 1 } func MarshalLen(i int) (b []byte) { if i < 0x80 { return []byte{byte(i)} } n := lenLen(i) b = append(b, byte(n)|0x80) for ; n > 0; n-- { b = append(b, byte(i>>uint((n-1)*8))) } return }