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; i >>= 8 { n++ } for ; i < -128; i >>= 8 { n++ } 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 }