From ad9f52bfce0805e757af93190332ed9ccb69269a Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Thu, 6 Aug 2015 16:08:59 +0200 Subject: Simplify int --- ber/int.go | 46 ++++++++++++++++++++++------------------------ 1 file changed, 22 insertions(+), 24 deletions(-) (limited to 'ber') diff --git a/ber/int.go b/ber/int.go index bbf93ea..437e0c6 100644 --- a/ber/int.go +++ b/ber/int.go @@ -1,44 +1,42 @@ package ber -func intLen(i int64) int { - n := 1 - for i > 255 { - n++ - i >>= 8 - } - for i < -256 { - n++ - i >>= 8 - } - return n -} - func unmarshalInt(b []byte) (i int64) { - nn := len(b) neg := b[0]&0x80 != 0 - if b[0] == 0xFF { - b = b[1:] - nn -= 1 - } for n, v := range b { if neg { v = ^v } - i += int64(v) << uint((nn-n-1)*8) + i += int64(v) << uint((len(b)-n-1)*8) } if neg { - i = -i - 1 + i = ^i } return } -func unmarshalUint(b []byte) (i int64) { +func unmarshalUint(b []byte) (i uint64) { for n, v := range b { - i += int64(v) << uint(n*8) + i += uint64(v) << uint(n*8) } return } +func UnmarshalInt(b []byte) int { + return int(unmarshalInt(b)) +} + +func intLen(i int64) (n int) { + for i > 255 { + n++ + i >>= 8 + } + for i < -256 { + n++ + i >>= 8 + } + return n + 1 +} + func marshalInt(i int64) (b []byte) { for n := intLen(i); n > 0; n-- { b = append(b, byte(i>>uint((n-1)*8))) @@ -52,6 +50,6 @@ func marshalInt(i int64) (b []byte) { return } -func UnmarshalInt(b []byte) int { - return int(unmarshalInt(b)) +func MarshalInt(i int) []byte { + return marshalInt(int64(i)) } -- cgit v1.2.3