From a80b9d1c1a0de5602735814363c26e201387aca3 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Sun, 9 Aug 2015 14:24:00 +0200 Subject: optimize --- ber/len.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'ber/len.go') diff --git a/ber/len.go b/ber/len.go index 55262e0..e1d7933 100644 --- a/ber/len.go +++ b/ber/len.go @@ -11,11 +11,19 @@ func UnmarshalLen(b []byte) (i, n int) { 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)} } - for n := intLen(i); n > 0; n-- { + for n := lenLen(i); n > 0; n-- { b = append(b, byte(i>>uint((n-1)*8))) } b = append([]byte{byte(len(b) | 0x80)}, b...) -- cgit v1.2.3