From c5b32db26a2dc043bf0777f9f9532e4c360241b2 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Fri, 26 Jun 2015 20:03:43 +0200 Subject: Add base128 --- ber/obj.go | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'ber/obj.go') diff --git a/ber/obj.go b/ber/obj.go index e9db78c..735ef97 100644 --- a/ber/obj.go +++ b/ber/obj.go @@ -1,7 +1,21 @@ package ber -func base128(i int) (b []byte) { - return b +func base128(n int) (b []byte) { + l := 0 + + for i := n; i > 0; i >>= 7 { + l++ + } + + for i := l - 1; i >= 0; i-- { + o := byte(n >> uint(i*7)) + o &= 0x7F + if i != 0 { + o |= 0x80 + } + b = append(b, o) + } + return } func debase128(b []byte) int { -- cgit v1.2.3