From 993e9c8138699a08379711d6e071e9365b6edaf0 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Sun, 9 Aug 2015 13:47:34 +0200 Subject: Add len marshaling --- ber/len.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'ber/len.go') diff --git a/ber/len.go b/ber/len.go index 5e0232c..dffb1df 100644 --- a/ber/len.go +++ b/ber/len.go @@ -10,3 +10,15 @@ func UnmarshalLen(b []byte) (i, n int) { } return i, n + 1 } + +func MarshalLen(i int) (b []byte) { + if i < 0x80 { + b = append(b, byte(i)) + return + } + for n := intLen(i); n > 0; n-- { + b = append(b, byte(i>>uint((n-1)*8))) + } + b = append([]byte{byte(len(b) | 0x80)}, b...) + return +} -- cgit v1.2.3