package ber func UnmarshalInt(b []byte) (i int) { neg := b[0]&0x80 != 0 for _, v := range b { if neg { v = ^v } i <<= 8 i |= int(v) } if neg { i = ^i } return } func intLen(i int) (n int) { for i > 127 { n++ i >>= 8 } for i < -128 { n++ i >>= 8 } return n + 1 } func MarshalInt(i int) (b []byte) { for n := intLen(i); n > 0; n-- { b = append(b, byte(i>>uint((n-1)*8))) } return }